Вероятно, существует, чтобы избежать путаницы с перегруженным оператором ==.Представьте, что приведение не существует и оператор == был перегружен.Теперь строка p == null
потенциально может связываться с оператором ==.Многие реализации оператора == просто относятся к переопределенному методу Equals
.Это может легко вызвать ситуацию переполнения стека
public static bool operator==(TwoDPoint left, TwoDPoint right) {
return left.Equals(right);
}
public override bool Equals(System.Object obj) {
...
TwoDPoint p = obj as TwoDPoint;
if ( p == null ) { // Stack overflow!!!
return false;
}
...
}
При приведении к Object
автор обеспечивает простую проверку ссылок для null
(что и предполагается).