虽然从点源的ps1文件中获取静态成员的值总是有效的,但设置静态成员似乎不一致。
test.ps1:
class A
{
static $val
A()
{
[A]::val = "empty"
}
}
$A = [A]::new()
write-host $([A]::val)
[A]::val = "test"
. .test2.ps1
write-host $([A]::val)
test2.ps1
[A]::val = "val"
控制台输出:
empty
test
我期望的控制台输出:
empty
val
因此,我在test2.ps1中添加了一个write-host:
[A]::val = "val"
write-host $([A]::val)
然后再运行一遍:
empty
val
val
好吧,我对自己说。
我从test2中删除了write-host。ps1和我得到另一个意想不到的控制台输出:
empty
val
我错过什么了吗?
正如Santiago Squarzon所指出的,我只需要重新启动我的代码编辑器(VSCode)和我正在执行脚本的终端来启动一个新的PSSession。在我这样做之前,我找到了一种方法来规避这个问题;;
test.ps1
...
$x = ""
. .test2.ps1
[A]::val = $x
...
test2.ps1
$x = "val"