小编pri*_*ope的帖子

我如何滥用null运算符?这是否正确评估为“ null”?

我试图在Unity中的C#脚本中使用null-coalescing运算符,我的项目Scripting Runtime设置为.NET 4.x,因此它应该可以正常工作。

问题是,即使LEFT操作数的计算结果为null,也不会正确返回RIGHT操作数。

这是一个示例语句,当左侧Operand返回null时,该语句不起作用

m_meshFilter = ( GetMeshFilter() ?? AddMeshFilter() );
Run Code Online (Sandbox Code Playgroud)

这是SAME确切的语句,除了它显式地将null传递给null-coalescing运算符(运行时可正常运行

m_meshFilter = ( GetMeshFilter() == null ? null : GetMeshFilter() ) ?? AddMeshFilter();
Run Code Online (Sandbox Code Playgroud)

这是一个简短的脚本,可以直接在Unity中轻松测试问题。

using UnityEngine;

public class DoubleQuestionTest : MonoBehaviour
{
    public GameObject myGo;

    public MeshFilter m_meshFilter = null;

    [ContextMenu( "Test1 Null Coalescing Operator" )]
    void Test1()
    {
        m_meshFilter = ( GetMeshFilter() ?? AddMeshFilter() );

        if ( m_meshFilter == null )
        {
            Debug.Log( "m_meshFilter was null, trying Alternate" );
            m_meshFilter = ( …
Run Code Online (Sandbox Code Playgroud)

c# null-coalescing-operator unity-game-engine

4
推荐指数
1
解决办法
223
查看次数