Avatar Class 的构造函数 returns null

Constructor returns null for Avatar Class

我认为 C# 中的 class 构造函数不应该 return null。但是 Unity3D 中 Avatar class 的构造函数 return 为 null。 您不必使用 Unity3D 来产生想法。当它不在语言的定义中时,我问它怎么可能。就算有可能是Unity引擎的bug,这样的bug有可能吗?

如果你使用Unity,你可以用这段代码进行测试:

 [ExecuteInEditMode]
 public class Test : MonoBehaviour {
     void Update(){
         Avatar avatar = new Avatar();
         if(avatar == null) Debug.Log("Constructor really returns null.");
     }
 }

注意事项: - 头像 class 继承自 UnityEngine.Object - 继承自 UnityEngine.Object 的其他 classes 没有这个问题 - Unity 使用自定义版本的 Mono 框架。

问题是,== 运算符过载,可能会检查与实际对象不同的内容。对于任何继承自 UnityEngine.Object 的 class,您不应通过 new 实例化 class。你必须使用 UnityEngine.Object.CreateInstance.