我正在查看这段代码:https://github.com/aras-p/UnityGaussianSplatting/blob/main/package/Runtime/GaussianSplatRenderer.cs第65行有,
m_CommandBuffer?.Dispose();
我不明白,因为它使用的对象是m_CommandBuffer。 那么这个“?”是什么?适合对象和 .Dispose(); 之间的操作;?好像是语言层面的,但我找不到参考资料。谢谢。
这是一个零分辨率。如果 m_CommandBuffer 为 null,则不会引发异常,但处理会停止(不调用 dispose)。
这与以下内容相同且更短:
if (m_CommandBuffer != null) m_CommandBuffer.Dispose();
这是几年前添加的,与 ?? 一起添加,这是空链:
m_CommandBuffer = 函数调用() ??抛出新的 InvalidOperationException
如果函数调用返回null,则??后面的部分已分配(或 inf 这种情况抛出)。
学习完整的 C# 语法 - 很多类似“隐藏”在文档中的内容。更多每种语言版本。