Является ли "if (! Myobject)" таким же, как "if (myobject == null)"? - PullRequest
0 голосов
/ 30 августа 2018

Сегодня я столкнулся с интересным фрагментом кода C # в проекте Unity:

MyScript ms = new MyScript(); //MyScript derives from MonoBehaviour
ms = null;
if(!ms) { Debug.Log("ms = "+(ms==null)); }

Кажется, он ведет себя так же, как:

if(ms == null) { /*Do Stuff*/ }

Но разве это одно и то же? Я еще не нашел никакой документации по этому поводу. Есть ли причина не использовать более короткую версию или предпочитать одну версию другой?

1 Ответ

0 голосов
/ 30 августа 2018

Нет. Вы можете сделать это в Javascript, но C # не будет работать так, если myobject на самом деле не является логическим значением.


Основано на этом комментарии:

myobject ... происходит от MonoBehaviour.

и этот отрывок из документов MonoBehavior :

<b>Operators</b>

bool           Does the object exist?  
operator !=    Compares if two objects refer to a different object.  

Похоже, вы можете сделать это для своей переменной, потому что она неявно преобразуется в bool. Но это не совсем нормально для C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...