一些事实:
当您将一个对象分配给一个被调用的变量$a
,然后它的一个属性发生变化时,该变量$a
就会得到更新。
但是,当我将对象属性 $object.property
的值(而不是对象本身)分配给调用的变量$b
然后$object.property
更改时,$b
不会更新。这意味着,当前值存储在 中$object.property
,但$b
保持原样。
一个例子:
我将一个Window
对象分配给一个名为$bochsWindow
. 然后一些属性会因为我移动窗口而改变。但是当我打印出来时$bochsWindow
,你可以看到它是最新的——这意味着对象属性的所有新值也都存储在$bochsWindow
.
但是,如果尝试将属性存储$bochsWindow
在一个名为的变量中$posX
,然后该属性发生变化,$posX
则不会发生变化。
PS .> $bochsWindow = (GetProcess bochs | Get-Window)
PS .> $bochsWindow
ProcessId : 1536
ProcessName : bochs
Position : {X=54,Y=32,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
[[Moving Boch's Window By Hand]]
PS .> $bochsWindow
ProcessId : 1536
ProcessName : bochs
Position : {X=0,Y=0,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
PS .> (Get-Window -ProcessName bochs)
ProcessId : 1536
ProcessName : bochs
Position : {X=0,Y=0,Width=650,Height=576}
IsMinimized : False
IsMaximized : False
WindowHandle : 3933134
Caption : Bochs for Windows - Display
PS .> $posX = $bochsWindow.Position.X
PS .> $posX
302
[[Moving Boch's Window By Hand]]
PS .> $posX
302
PS .> $bochsWindow.Position.X
472
PS .>
但是,如果我想$posX
保持最新状态并始终存储新值 ( 472
) 而不是302
我的问题:
我想将对象属性的引用存储在变量中。这意味着,我希望每次对象的属性更改时都更新变量。我怎样才能做到这一点?谢谢。