为什么这不起作用?

PS deployables:\> $host.ui.rawui.windowsize.width
170
PS deployables:\> $host.ui.rawui.windowsize.width = 100
PS deployables:\> $host.ui.rawui.windowsize.width
170

但是呢?
PS deployables:\> $host.ui.rawui.windowsize.width
170
PS deployables:\> $newsize = $host.ui.rawui.windowsize
PS deployables:\> $newsize.width = 100
PS deployables:\> $host.ui.rawui.windowsize = $newsize
PS deployables:\> $host.ui.rawui.windowsize.width
100

我不确定是否误解了PowerShell或.NET属性分配,是否有人可以为我提供一些帮助?

最佳答案

gh,我不敢相信PowerShell在这些结构上定义了setter。 .NET中的结构通常应该是不可变的,以免造成混淆,就像您在上面看到的那样。有关更多详细信息,请参见此SO question。结构按值传递。修改WindowSize结构时,正在修改它的副本。当您分配整个结构时,例如使用$newsize可以正常工作,因为您正在将一个新的结构值分配给WindowSize属性。

关于.net - PowerShell属性值分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13096657/

10-13 00:41