我认为C#中的类构造函数不应该返回null。但是Unity3D中Avatar类的构造函数返回null。 您不必使用Unity3D来构思。我问它不是在语言的定义中是如何可能的。即使它有可能成为Unity引擎中的错误,这样的错误是否可能?
如果您使用Unity,则可以使用以下代码进行测试:
[ExecuteInEditMode]
public class Test : MonoBehaviour {
void Update(){
Avatar avatar = new Avatar();
if(avatar == null) Debug.Log("Constructor really returns null.");
}
}
很少有事情需要注意: - 头像类继承自UnityEngine.Object - 继承自UnityEngine.Object的其他类没有这个问题 - Unity使用Mono框架的自定义版本。
答案 0 :(得分:2)
问题是,==
运算符过载并且可能检查与实际对象不同的东西。对于从UnityEngine.Object
继承的任何类,您不应通过new
实例化该类。你必须使用UnityEngine.Object.CreateInstance
。