2014-07-14 62 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 

$空包裝了一個空引用到對象,難怪它只是工作,即使它們是兩個不同的東西。