Я по чистой случайности обнаружил, что компилятор С# обращается к этому методу:
static bool IsNotNull(object obj)
{
return obj != null;
}
... в этот CIL:
.method private hidebysig static bool IsNotNull(object obj) cil managed
{
ldarg.0 // obj
ldnull
cgt.un
ret
}
... или, если вы предпочитаете смотреть на декомпилированный код С#:
static bool IsNotNull(object obj)
{
return obj > null; // (note: this is not a valid C# expression)
}
Как получилось, что !=
переводится как ">
"?