c# - c# 中的两个 if 语句有区别吗

标签 c# if-statement

两者之间有区别吗:

 if (myObject != null && myObject.someint == 0)
 {
      // do something
 }

if (myObject != null)
{
    if (myObject.someint == 0)
    {
        // do something
    }
}

我一直认为它会评估第一个条件,如果为假,它会跳过第二个条件的评估。但是我在空引用运行时遇到错误。 myObject 为 null,它正在尝试检查 myObject.someint

该对象可以从外部修改,是否是这样的情况:当它检查第一个条件时对象存在,但当它继续到下一个条件时,某些东西杀死了 myObject 中的引用?

如果是后者,有什么方法可以避免(b/c 在我看来,上述两种进行 if 检查的方法都是相同的)。我能想象的唯一可能是try/catch

最佳答案

这一定是后一个条件,因为 && 在 false 上短路。使用

lock(myObject)

关于c# - c# 中的两个 if 语句有区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138517/

相关文章:

javascript - 检测移动浏览器 : How to rewrite the following into an if AND else statement?

php - 在条件 (if) 语句中使用 CodeCeption 断言

java - boolean 值不会中断语句

sql-server - SQL 查询中的 IF 条件

c# - 使用 System.Text.Json.Serialization 序列化 const

c# - 检测明亮和黑暗的图像

c# - OpenRasta - 资源 uri 不正确时返回不正确的状态代码

c# - 链式 if 语句的模式

c# - 为什么此 Controller 操作的结果为空?

C# ??结合? : question