是否有重要理由不对每个对象引用使用安全导航?

Cod*_*man 0 .net c# c#-4.0

我一直在向我的团队介绍一些新的C#语言功能 - 安全导航就是其中之一.

是否有任何重要的性能原因可以避免为每个对象/属性调用使用安全导航?

例如:

myObject?.Field?.FieldValue
Run Code Online (Sandbox Code Playgroud)

myObject.Field.FieldValue
Run Code Online (Sandbox Code Playgroud)

我知道这使得每个字段都被空检查 - 但是在一个紧密的循环之外,这个捕获的错误不值得吗?或者这是否鼓励懒惰编码?

编辑:

我找到了关于这个主题的整篇文章,希望它对其他人有帮助!

das*_*ght 7

不要抓到这些虫子值得吗?

恰恰相反:在任何地方应用安全导航都会隐藏错误,而不是捕获错误.

null错误地导航引用是实现中的一个错误,可能意味着以下两种情况之一:

  1. 您应该导航的字段不应该是 null
  2. 你忘了 - 检查null一个合法的字段null

对于情况#2,应用安全导航是一个不错的选择,因为它允许您使用较少的代码执行空检查.但是,对于情况#1来说,这是一个糟糕的选择,因为从程序逻辑的角度来看,它允许对象或变量保持不正确的状态.

这就是为什么程序员在应用安全导航时应该自行决定,单独决定每个案例.

  • 很好的答案,正如我所寻求的一般指导方针.谢谢! (2认同)