注意: 这个问题是在引进之前问了.?用C#操作6 /的Visual Studio 2015年。
.?
我们都去过那里,我们有一些很深的属性,例如cake.frosting.berries.loader,我们需要检查它是否为null,因此也不例外。要做的方法是使用短路if语句
if (cake != null && cake.frosting != null && cake.frosting.berries != null) ...
这并不十分优雅,也许应该有一种更简单的方法来检查整个链,看看它是否与空变量/属性相关。
是否可以使用某些扩展方法,或者它是语言功能,还是一个坏主意?
我们考虑过添加一个新的操作“?”。具有所需语义的语言。(现在已添加;请参见下文。)也就是说,您会说
cake?.frosting?.berries?.loader
编译器将为您生成所有短路检查。
它并没有成为C#4的标准。也许是该语言的一个假设的未来版本。
更新(2014年): 该?.操作员现已计划用于下一个Roslyn编译器版本。请注意,关于运算符的确切语法和语义分析仍存在一些争论。
?.
更新(2015年7月): Visual Studio 2015已发布,并附带支持空条件运算符?.和?[]的C#编译器。
?[]