Кастинг на объект 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