Ответ 1
Нет, это не эквивалентно, потому что Version
перегружает оператор ==
.
Фрагмент, переводящий левый операнд в Object
, эквивалентен:
if (Object.ReferenceEquals(version, null))
... вместо вызова реализации operator==
в Version
. Вероятно, это может сделать проверку недействительности как ее первое действие, но это просто обходит лишний уровень.
В других случаях это может иметь очень важное значение. Например:
string original = "foo";
string other = new string(original.ToCharArray());
Console.WriteLine(original == other); // True
Console.WriteLine((object) original == other); // False