作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
据我了解和阅读,您可以在 if 语句(&& 或 ||)中使用短路,以使第二个条件不触发。如果您希望两个条件都触发,您可以使用单个操作数(& 或 |)。
假设我有如下内联 if 语句:
var test = (MyObject != null || string.IsNullOrEmpty(MyObject.Property)) ? string.Empty : MyObject.Property;
如果 MyObject 为 null,这将引发 object reference
错误,我认为这不应该,因为我正在使用短路。有人可以解释一下吗。
最佳答案
您使用了错误的条件。这部分:
MyObject != null || string.IsNullOrEmpty(MyObject.Property)
应该是:
MyObject == null || string.IsNullOrEmpty(MyObject.Property)
||
的 RHS 仅在左手为 false 时执行。您希望它仅在 MyObject
为 not null 时执行。
编辑:如果您真的想要 MyObject != null
部分,您可以将整个内容更改为:
var test = MyObject != null && !string.IsNullOrEmpty(MyObject.Property)
? MyObject.Property : "";
不过请注意条件运算符的第二个和第三个操作数的反转。
关于c# - 内联 If 语句 - 短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157215/
我是一名优秀的程序员,十分优秀!