虽然从点源 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 中添加了一个写主机:
[A]::val = "val"
write-host $([A]::val)
再次运行:
empty
val
val
好吧,我对自己说。
我从 test2.ps1 中删除了写入主机,我得到了另一个意外的控制台输出:
empty
val
我错过了什么吗?
正如 Santiago Squarzon 所指出的,我只需要重新启动我的代码编辑器 (VSCode) 和我在其中执行脚本的终端即可启动一个新的 PSSession。不过,在我这样做之前,我找到了这种方法来规避这个问题;;
test.ps1
...
$x = ""
. .\test2.ps1
[A]::val = $x
...
test2.ps1
$x = "val"