C# 对象可以为“null”但仍具有属性吗?

Arn*_*aud 0 c# unity-game-engine

我有一个对象,我可以在调试控制台中打印其属性(如“名称”、“id”等)。在下一行,我打印对象本身,然后得到“null”。有点像这样:

Debug.Log($"Item name is {item.name}");
Debug.Log($"Item is {item}");
if (item == null)
{
    Debug.Log("Yes, item is null!");
}
Run Code Online (Sandbox Code Playgroud)

因此第一行将打印正确的名称,第二行将打印“null”。第三行打印“是的,项目为空!”。

这怎么可能?(我不知道这是否相关,但这发生在 Unity 代码中。)

谢谢你,阿诺。

shi*_*ngo 5

那是因为UnityEngine.Object重载了==,!=bool运算符。

https://docs.unity3d.com/ScriptReference/Object-operator_eq.html

Unity对象在被销毁后将等于null,但您仍然可以访问其部分属性。

您可以使用以下条件来检查 Unity 对象是否完全为空。

(object)item == null
Run Code Online (Sandbox Code Playgroud)