小编irh*_*irh的帖子

从powershell调用C#方法而不提供可选参数

我有一个ac#方法我从dll加载默认的可选字符串参数null.例如

public void foo(string path, string new_name = null, bool save_now = true)
{
    if(name == null)
        new_name = Path.GetFileNameWithoutExtension(path);
    ...
    if(save_now)
       Save();
}
Run Code Online (Sandbox Code Playgroud)

我想在一个powershell脚本中调用它,而不是为new_name一个for 提供一个值save_now.根据这个看似非常相似的问题,我试过了

$default = [type]::Missing
$obj.foo($path, $default, $false)
Run Code Online (Sandbox Code Playgroud)

但这导致new_name被设置"System.Reflection.Missing"在函数内.

另外我试过了

$obj.foo($path, $null, $false)
Run Code Online (Sandbox Code Playgroud)

但这会导致new_name设置为空字符串,但仍然没有null.我可以将默认设置为空字符串,但我想知道是否有任何好方法可以使用默认值.

c# powershell optional-parameters

5
推荐指数
1
解决办法
2360
查看次数

标签 统计

c# ×1

optional-parameters ×1

powershell ×1