arrays - Powershell:引用数组中的单个元素

标签 arrays powershell variables reference

我想使用 [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/

    相关文章:

    .net - 新对象 : Cannot find an overload for "PSCredential" and the argument count: "2"

    scripting - 从批处理中调用 PowerShell,并检索脚本中设置的临时环境变量的新值?

    Razor MVC 中 C# 语句中的 JavaScript 变量

    python - 带有 numpy 数组的 numpy 日志

    python - numpy 有条件地用数组替换标量/ bool 值

    java - 按下 JButton 时重置游戏的 ActionListener

    arrays - 如何快速获取字符串数组中的最后 8 个字符?

    powershell - 动态替换文件中每次出现的字符串

    powershell - 如何在 Exchange Online 的 Powershell 代码中将字符串转换为 bool 值?

    perl - 在一行 Perl 中执行多个 +=