Другое интересное использование (которое Unity сделал, чтобы проверить, является ли объект (и, следовательно, экземпляр MonoBehavior) нулевым):
public static implicit operator bool (CustomClass c)
{
if (c == null) return false;
else return true;
}
Таким образом, вы можете сделать что-то вроде этого:
void Method ()
{
CustomClass c1 = null;
CustomClass c2 = new CustomClass ();
bool b1 = c1; // is false
bool b2 = c2; // is true
if (!c1 && c2)
{
// Do stuff
}
}
Очевидно, что самым печально известным использованием может быть его использование для преобразования одного из ваших классов в другой из ваших классов. Но использование их с базовыми типами также заслуживает рассмотрения ... и я вижу, что оно упоминается довольно редко.