2014-07-14 97 views
2

PowerShell的$null等效于.NET的null?我有一个场景,其中我必须从PowerShell中调用.NET方法,并将null作为方法参数。截至目前,我在方法调用中遇到了一些程序集加载相关的错误。我想知道$null是不是罪魁祸首。另外,如果您知道使用PowerShell的null参数调用.NET方法的正确方式,请分享。

方法签名:

void SetUp(IKernel kernel, Action<IBindingInSyntax<object>> obj) 

感谢

+0

方法参数是'空'的?你可以发布方法的标志吗? –

+0

是的。这是一个引用类型变量。 –

+4

如果你在PowerShell版本2.0和参数是字符串类型尝试声明变量为'[System.Management.Automation.Language.NullString] :: Value' –

回答

2

PowerShell的转换是$空到.NET的空只在函数调用的罚款。

举例说明。

Add-Type -TypeDefinition @" 
public static class Foo 
{ 
    public static bool IsNull(object o) 
    { 
     return o == null; 
    } 
} 
"@ -Language CSharp 

[Foo]::IsNull($null) 

[Foo]::IsNull("string") 

输出:

True 
False 

$空包装了一个空引用到对象,难怪它只是工作,即使它们是两个不同的东西。