我一直在向我的团队介绍一些新的C#语言功能 - 安全导航就是其中之一.
是否有任何重要的性能原因可以避免为每个对象/属性调用使用安全导航?
例如:
myObject?.Field?.FieldValue
Run Code Online (Sandbox Code Playgroud)
与
myObject.Field.FieldValue
Run Code Online (Sandbox Code Playgroud)
我知道这使得每个字段都被空检查 - 但是在一个紧密的循环之外,这个捕获的错误不值得吗?或者这是否鼓励懒惰编码?
编辑:
我找到了关于这个主题的整篇文章,希望它对其他人有帮助!
不要抓到这些虫子值得吗?
恰恰相反:在任何地方应用安全导航都会隐藏错误,而不是捕获错误.
null错误地导航引用是实现中的一个错误,可能意味着以下两种情况之一:
nullnull一个合法的字段null对于情况#2,应用安全导航是一个不错的选择,因为它允许您使用较少的代码执行空检查.但是,对于情况#1来说,这是一个糟糕的选择,因为从程序逻辑的角度来看,它允许对象或变量保持不正确的状态.
这就是为什么程序员在应用安全导航时应该自行决定,单独决定每个案例.