Обычно это можно увидеть в реализации оператора ==.
Например:
public static bool operator ==(Foo f1, Foo f2)
{
if (ReferenceEquals(f1, f2))
{
return true;
}
if (ReferenceEquals(f1, null) || ReferenceEquals(f2, null))
{
return false;
}
// Now do comparisons
}
Вы не хотите использовать:
if (f1 == f2)
потому что это будет повторяться в тот же код! Альтернатива:
if ((object)f1 == (object)f2)
(И то же самое для проверки нуля.)