Я только что посмотрел Руководство по перегрузке Equals () в msdn (см. Код ниже); для меня большая часть этого понятна, но есть одна строка, которую я не понимаю.
if ((System.Object)p == null)
или, во втором переопределении
if ((object)p == null)
Почему бы не просто
if (p == null)
Что за актерский состав покупает нас?
public override bool Equals(System.Object obj)
{
// If parameter is null return false.
if (obj == null)
{
return false;
}
// If parameter cannot be cast to Point return false.
TwoDPoint p = obj as TwoDPoint;
if ((System.Object)p == null)
{
return false;
}
// Return true if the fields match:
return (x == p.x) && (y == p.y);
}
public bool Equals(TwoDPoint p)
{
// If parameter is null return false:
if ((object)p == null)
{
return false;
}
// Return true if the fields match:
return (x == p.x) && (y == p.y);
}