Подтвердить что ты не робот

Избыточно унаследовать от Object в С#?

Как указано выше, избыточно ли оно наследовать от Object в С#? У обоих наборов кода ниже приводятся эквивалентные объекты?

class TestClassUno : Object
{
    // Stuff
}

против.

class TestClassDos
{
    // Stuff
}

Я заглядывал в MSDN, но не смог найти ничего прекрасного.

4b9b3361

Ответ 1

Если оставить неопределенным, каждое определение class будет неявно наследоваться от System.Object, поэтому два определения эквивалентны.

Единственный раз, когда эти два будут отличаться, если кто-то фактически определил другой тип Object в том же пространстве имен. В этом случае локальное определение Object будет иметь приоритет и изменить объект наследования

namespace Example {
  class Object { } 
  class C : Object { } 
}

Очень угловой случай, но не указывал бы это, если бы я не видел его раньше

Обратите внимание, что это не так, если вы использовали Object вместо Object. Ключевое слово С# Object является псевдонимом типа для System.Object и, следовательно, оно не будет соответствовать Example.Object.

namespace Example2 { 
  class Object { } 
  class C : Object { } // Uses Example.Object
  class D : object { } // Uses System.Object
}

Конечно, если у вас действительно злой разработчик, вы все равно можете вызвать путаницу с Object

namespace System { 
  class Object { 
    private Object() { } 
  }
}

namespace Example3 {
  // This will properly fail to compile since it can't bind to the private
  // Object constructor.  This demonstrates that we are using our definition
  // of Object instead of mscorlib 
  class C : object { } // Uses our System.Object
}

Ответ 2

Да, все в конечном счете наследуется от объекта, если он определен как class. Оставьте явное наследование вне вашего кода.

Ответ 3

Да, он избыточен для наследования объекта в классе

Ответ 4

MSDN: Класс объекта: Поддерживает все классы в иерархии классов .NET Framework и предоставляет низкоуровневые сервисы для производных классов. Это конечный базовый класс всех классов в .NET Framework; это корень иерархии типов.

Проверьте это исследование: наследует от объекта? Исследование того, как.

enter image description here

Ответ 5

Объект является матерью всех классов в .Net. Нет ничего выше.

Все классы наследуют от него. Итак, этот код

class TestClassDos
{
    // Stuff
}

автоматически означает, что он наследует объект.

Доказательство. Вы можете придать любому объекту объект, который возможен, если он наследуется от него.

Сводка класса объектов говорит

// Supports all classes in the .NET Framework class hierarchy and provides low-level
// services to derived classes. This is the ultimate base class of all classes
// in the .NET Framework; it is the root of the type hierarchy.

Ответ 6

Да, они оба одинаковы, я не думаю, что я видел, что кто-то упоминал структуры, но все объекты (независимо от того, объявляете ли вы класс или структуру), все они в конечном итоге наследуются от Object, см. статью Объект MSDN и эту статью в Structs