我想使用 [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
相同的值.我究竟做错了什么?
最佳答案
在 PowerShell 中,您无法获得对数组单个元素的引用。
要获得对数组特定元素的写访问权限,您唯一的选择是:
换句话说:
给定
$var3 = "string 1", "string 2", "string 3"
, 修改存储在 $var3
中的数组的第二个元素的唯一方法是使用 $var3[1] = ...
(通过按需编译的 C# 代码禁止杂技)。至于你试过什么 :
[ref] $var2 = [ref] ($var3[1])
在 PowerShell 中,如果你得到
$var3[1]
的值,它总是存储在 $var3
中的数据的副本。的第二个元素 (这可能是实际数据的副本,如果元素包含值类型的实例,或者引用类型的实例的引用的副本,否则)。将该副本转换到
[ref]
因此总是与原始数组元素分离。
关于arrays - Powershell:引用数组中的单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62903170/