从点源文件设置静态成员

问题描述 投票:0回答:1

虽然从点源 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

我错过了什么吗?

powershell static-members dot-source
1个回答
0
投票

正如 Santiago Squarzon 所指出的,我只需要重新启动我的代码编辑器 (VSCode) 和我在其中执行脚本的终端即可启动一个新的 PSSession。不过,在我这样做之前,我找到了这种方法来规避这个问题;;

test.ps1

...
$x = ""

. .\test2.ps1

[A]::val = $x
...

test2.ps1

$x = "val"
© www.soinside.com 2019 - 2024. All rights reserved.