PowerShell: 如何引用数组中的单个元素

6

我想通过使用 [ref] 关键字来引用数组中的单个元素。

如何测试引用:

$var1 = "this is a string"
[ref]$var2 = [ref]$var1

$var2.Value
this is a string

$var2.Value += " too!"
$var2.Value
this is a string too!

$var1
this is a string too!

以上内容已按预期工作。但是现在如何引用任意数组中的单个元素?
$var3="string 1", "string 2", "string 3"
[ref]$var2=[ref]($var3[1])

$var2.Value
string 2

$var2.Value += " updated!"
$var2.Value
string 2 updated!

$var3[1]
string 2

我期望$var3[1]返回与$var2.Value的值相同。我做错了什么?
1个回答

3
在PowerShell中,无法获取数组的单个元素的引用 要获得对特定元素的写入访问权限,您唯一的选择是:
  • 使用数组作为整体的引用

  • 并且通过索引引用感兴趣的元素。

换句话说:
给定$var3 = "string 1", "string 2", "string 3"修改存储在$var3中的数组的第二个元素的唯一方法是使用$var3[1] = ...(除非通过即时编译的C#代码进行杂技表演)。
关于您试过的代码:
```[ref] $var2 = [ref] ($var3[1])```
在PowerShell中,如果您获取`$var3[1]`的值,则无论如何都会是存储在`$var3`第二个元素中数据的一个副本(如果该元素包含值类型的实例,则可能是实际数据的副本,否则是对引用类型实例的引用的副本)。
将那个副本强制转换为[ref]因此与原始数组元素不可避免地解除了关联。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接