O PowerShell $ null não é mais nulo ao chamar o código C #
No PowerShell, é possível definir o código C # e executá-lo. Passar $ null para a seguinte função mais simples mostra que not null é passado para a função
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
Chamar da seguinte maneira leva à saída Not Null. É ''. Isso mostra que $ null não era nulo em c #. Métodos como 'IsNullOrEmpty' ou 'IsNullOrWhiteSpace' retornam true, portanto, o PowerShell deve ter implicitamente convertido o $ null em uma string.
[foo]::fooo($Null)
Alguma idéia de por que isso está acontecendo e se houver uma correção melhor além de chamar String.IsNullOrEnpty em C #? Nota: isso acontece independentemente do idioma C # especificado 'Add_Type'. Estou usando o PowerShell V5.