我希望有一种方法可以在 C# 中简化这种类型的测试:
if (foo != null &&
foo.bar != null &&
foo.bar.baz != null &&
foo.bar.baz.bat != null)
{
var bat = foo.bar.baz.bat;
bat.cat = 5;
bat.dog = 6;
}
支持这一点的一个可能特性是支持新变量声明的 if 语句,例如
if (foo != null &&
(var bar = foo.bar) != null &&
(var baz = bar.baz) != null &&
(var bat = baz.bat) != null)
{
bat.cat = 5;
bat.dog = 6;
}
此处的收益可能并不明显,因为在此示例中建议的解决方案实际上更长。但如果名字更长,它真的会得到回报。
有没有更好的方法来做到这一点?像这样的建议是否有可能真正成为该语言的未来版本(请致电 Eric Lippert,进来)?