如何在Powershell中查看变量引用的底层对象的内存地址?
在 C# 中,我可以执行如下操作,但不确定如何在 Powershell 中执行等效操作
int i;
int* pi = &i;
这样做的原因是因为下面的示例根据脚本 block 是点源还是使用调用运算符给出不同的结果。变量名称相同,并且当点源时,更新的值在脚本 block 退出后仍然保留。这让我想知道调用运算符实现是否适用于变量的副本,而点源实现则使用原始变量。
PS C:\> $n = 1;&{$n = 2};$n
1
PS C:\> $n = 1;.{$n = 2};$n
2
如果我能做这样的事情,它可能会帮助我理解正在发生的事情......
PS C:\> $n = 1;&{$n.GetMemoryAddress()};
##########
PS C:\> $n = 1;.{$n.GetMemoryAddress()};
##########
最佳答案
如果您的真正问题是找出某个对象是否在幕后被复制,也许您不需要查看它的地址。要查明两个对象是否是完全相同的实例,您可以使用 Object.ReferenceEquals :
[System.Object]::ReferenceEquals($a, $b)
关于powershell - 获取Powershell变量的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26037010/