Powershell - 类方法中的可选参数

Wol*_*ang 4 powershell

在 powershell 函数中我可以有类似的东西

Function myFunction {
    Param(
        [Parameter(Mandatory=$True)][string]$foo,
        [Parameter(Mandatory=$False)][string]$bar = "whatever"
    )
....
}
Run Code Online (Sandbox Code Playgroud)

但这似乎仅限于功能 - 方法有类似的东西吗?

class MyClass {
...
    [void]MethodA {
    Param(
    ....
Run Code Online (Sandbox Code Playgroud)

不适合我。
解释器抱怨类方法参数列表中缺少“(”。

Cli*_*ers 5

向类添加方法的工作方式与人们可能知道的大多数其他脚本语言一样。相反,[void]MethodA {Param()...}您可能想添加一个像本博客文章 或此处所述的块:

class MyClass {
    #...
    [void]MethodA ($param) {
        #...
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您的标题所说的可选参数(但您的问题没有),简短地说一下......

通常在这种情况下您需要多个签名。这意味着您创建一个方法MethodA($arg1, $arg2)和一个委托方法,例如MethodA($arg1) {MethodA($arg1, $null)}

  • @Đonny 可选参数[不幸的是,是强制性的](https://github.com/PowerShell/PowerShell/issues/9701)。 (2认同)