PowerShell $ null больше не равен null при вызове кода C #
В PowerShell можно определить код C # и выполнить его. Передача $ null в следующую простейшую функцию показывает, что в функцию передается не null
Add-Type -TypeDefinition @"
public static class foo
{
public static void fooo(string a)
{
if(a!=null)
{
System.Console.WriteLine("Not Null. Is '" + a + "'");
}
}
}
"@ -Language CSharp
Вызов его следующим образом приводит к выводу Not Null. Является ''. Это показывает, что $ null не был нулевым в C #. Такие методы, как «IsNullOrEmpty» или «IsNullOrWhiteSpace», возвращают true, поэтому PowerShell должен неявно преобразовывать $ null в строку.
[foo]::fooo($Null)
Любые идеи, почему это происходит, и если есть лучшее решение, кроме вызова String.IsNullOrEnpty в C #? NB: Это происходит независимо от языка C #, указанного 'Add_Type'. Я использую PowerShell V5.