C # Operador de propagação nulo / expressão de acesso condicional e se blocos
O Operador de propagação nulo / expressão de acesso condicional chegando c # -6.0 parece um recurso bastante útil. Mas estou curioso para ajudar a resolver o problema de verificar se um membro filho não é nulo e, em seguida, chamar um método booleano no membro filho dentro de um bloco if:
public class Container<int>{
IEnumerable<int> Objects {get;set;}
}
public Container BuildContainer()
{
var c = new Container();
if (/* Some Random Condition */)
c.Objects = new List<int>{1,2,4};
}
public void Test()
{
var c = BuildContainer();
//Old way
if ( null != c && null != c.Objects && c.Objects.Any())
Console.Write("Container has items!");
//C# 6 way?
if (c?.Object?.Any())
Console.Write("Container has items!");
}
Vaic?.Object?.Any()
compilar? Se o operador de propagação causar um curto-circuito (presumo que esse seja o termo certo) para nulo, você teráif (null)
, que não é válido.
A equipe de C # abordará essa preocupação ou estou perdendo o caso de uso pretendido para o operador de propagação nul