Все типы платформы .NET являются наследниками System.Object, синонимом которого в языке C# является ключевое слово object.
System.Object является базовым не только для встроенных типов, но и тех, которые мы определяем самостоятельно, а значит экземпляр любого типа может быть приведён к object:
string msg = "A string";
int n = 42;
Person me = new Person("John", 33);
// Can assign anything to an object variable
object o = msg;
o = n;
o = me;
Любой класс который мы определяем в C# также автоматически является наследником от object.
Тип object определяет следующий набор доступных для использования экземплярных методов:
🔸 bool Equals(object)
🔸 void Finalize()
🔸 int GetHashCode()
🔸 Type GetType()
🔸 object MemberwiseClone()
🔸 string ToString()
Статические методы включают в себя:
🔸 bool Equals(object, object)
🔸 bool ReferenceEquals(object, object)
Другими словами, каждый из приведённых выше методов унаследован и автоматически доступен при разработке.
💬 Знаете ли вы, что в 64-битных платформах Garbage Collector не позволяет выделять объекты, размер которых превышает 2 GB и выбрасывает OutOfMemoryException? Помочь с этим нам может специальный элемент конфигурации: gcAllowVeryLargeObjects.
#data_types