C#中?.运算符的作用是什么?针对代码实例的疑问
C# 空条件运算符(?.)解析
你看到的?.是C#里的空条件运算符,作用非常直接:
- 当运算符左侧的对象不为
null时,正常执行右侧的方法调用、属性或字段访问; - 当左侧对象是
null时,整个表达式直接返回null,不会执行右侧的操作,从根源避免抛出NullReferenceException。
拿你看到的代码m_CommandBuffer?.Dispose();举例:
- 如果
m_CommandBuffer已经被实例化(非空),就会调用它的Dispose()方法来释放占用的资源; - 如果
m_CommandBuffer是null,这行代码会直接跳过,不会尝试调用Dispose(),也就不会触发空引用报错。
它等价于下面的完整判断代码,但写法更简洁:
if (m_CommandBuffer != null) { m_CommandBuffer.Dispose(); }
除了方法调用,空条件运算符还能用于属性和字段访问,比如var value = someObject?.SomeProperty;,逻辑和方法调用完全一致——someObject为空时,value直接是null,不会去访问SomeProperty。
内容的提问来源于stack exchange,提问作者Ethan
相关产品推荐
相关产品推荐

