Что такое System.Object в C#?

«Что такое System.Object в C#?» — вопрос из категории C# Core, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

System.Object (или object — ключевое слово-псевдоним в C#) — это корневой базовый класс для всех типов в .NET. Каждый класс, структура, делегат или массив прямо или косвенно наследуется от Object.

Ключевые методы, предоставляемые Object:

  • Equals() — определяет равенство объектов.
  • GetHashCode() — возвращает хэш-код, используемый в хэш-таблицах.
  • ToString() — возвращает строковое представление объекта. По умолчанию выводит полное имя типа.
  • GetType() — возвращает объект Type, содержащий метаданные о типе объекта во время выполнения (RTTI).
  • MemberwiseClone() — создает поверхностную копию объекта.
  • ReferenceEquals() — статический метод для сравнения ссылок.

Пример и важность:

// Все типы могут быть приведены к object
int number = 42;
object boxed = number; // Упаковка (boxing)
int unboxed = (int)boxed; // Распаковка (unboxing)

// Методы доступны для любого объекта
string representation = anyObject.ToString();
Type runtimeType = anyObject.GetType();

Понимание System.Object критически важно для работы с коллекциями (ArrayList, List<object>), механизмами рефлексии, переопределения поведения по умолчанию (например, для Equals и GetHashCode в своих классах) и понимания системы типов .NET в целом.