Кастинг на объект in.NET ссылку на источник
Я шел через OperatingSystem.cs файл в справочном источнике .NET и отметил этот код в линия 50:
if ((Object) version == null)
version
является объектом класса Version
, что означает version
происходит от Object
. Если это так, не является ли это избыточным приведением к Object
? Разве это не то же самое, что и сейчас?
if (version == null)
1 ответ:
нет, это не эквивалентно-потому что
Version
перегружает==
оператора.фрагмент, который приводит левый операнд к
Object
эквивалентно:if (Object.ReferenceEquals(version, null))
... вместо того, чтобы называть
operator==
реализации вVersion
. Это, вероятно, сделает проверку nullity в качестве своего первого действия в любом случае, но это просто обходит дополнительный уровень.в других случаях это может иметь очень существенное значение. Например:
string original = "foo"; string other = new string(original.ToCharArray()); Console.WriteLine(original == other); // True Console.WriteLine((object) original == other); // False