gpt4 book ai didi

c# - 内联 If 语句 - 短路

转载 作者:太空狗 更新时间:2023-10-29 22:04:46 26 4
gpt4 key购买 nike

据我了解和阅读,您可以在 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 时执行。您希望它仅在 MyObjectnot null 时执行。

编辑:如果您真的想要 MyObject != null 部分,您可以将整个内容更改为:

var test = MyObject != null && !string.IsNullOrEmpty(MyObject.Property)
? MyObject.Property : "";

不过请注意条件运算符的第二个和第三个操作数的反转。

关于c# - 内联 If 语句 - 短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com