有什么作用?运算符在 C# 中做什么? [重复]

问题描述 投票:0回答:1

我正在查看这段代码:https://github.com/aras-p/UnityGaussianSplatting/blob/main/package/Runtime/GaussianSplatRenderer.cs第65行有,

m_CommandBuffer?.Dispose(); 

我不明白,因为它使用的对象是m_CommandBuffer。 那么这个“?”是什么?适合对象和 .Dispose(); 之间的操作;?好像是语言层面的,但我找不到参考资料。谢谢。

c# operators semantics
1个回答
0
投票

这是一个零分辨率。如果 m_CommandBuffer 为 null,则不会引发异常,但处理会停止(不调用 dispose)。

这与以下内容相同且更短:

if (m_CommandBuffer != null) m_CommandBuffer.Dispose();

这是几年前添加的,与 ?? 一起添加,这是空链:

m_CommandBuffer = 函数调用() ??抛出新的 InvalidOperationException

如果函数调用返回null,则??后面的部分已分配(或 inf 这种情况抛出)。

学习完整的 C# 语法 - 很多类似“隐藏”在文档中的内容。更多每种语言版本。

© www.soinside.com 2019 - 2024. All rights reserved.