2015-02-12 4 views
-8

Я родом из C/C++ и недавно начал новую работу, выполняющую работу C#. Я нахожу в много кода и примеры онлайн люди используют это соглашение, если заявленияЗачем использовать! = Null в операторах if?

if(obj != null) 

Я помню, как говорят, чтобы избежать использования отрицательной логики, когда это возможно. Так почему же не что-то вроде

if(obj) 

использовано вместо этого? Есть ли стандарт кода, который утверждает, что используется прежний стиль кодирования? Я думаю, что эти два утверждения оценивают одно и то же, но, возможно, они оценивают по-разному?

Любой вход очень ценится.

+7

Вы имеете в виду, почему ваш другой вариант не компилируется? (это не «соглашение») –

+1

Выражение выражения if должно оцениваться как логическое. –

+0

Нет, они оба скомпилированы (я думаю, что они как минимум), это скорее вопрос стиля. – Josh

ответ

5

if выражения должны быть boolean. Скажем, у меня есть строка:

string test = null; 

if (test) не будет компилировать, потому что testне BOOL. Он просто возвращает ссылку на строку. Таким образом, для проверки нулевой, вы на самом деле должны проверить нуль:

if (test != null) это выражение, которое делает возвращает логическое значение, и так компилируется, и это стандартный способ проверки нулевой.

6

Простой факт заключается в том, что C# имеет и использует истинный булевский тип. if ожидает булевское значение. Таким образом, if(obj) является синтаксической ошибкой, если obj - это что-то, кроме булева.

+2

'obj' не должно быть логическим. если у вас есть неявное преобразование, определенное из вашего типа в bool, тогда 'if (obj)' будет действительным. –

Смежные вопросы