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

Класс Object

 

Поддерживает все классы в иерархии классов .NET Framework и предоставляет службы низкого уровня для производных классов. Он является исходным базовым классом для всех классов платформы .NET Framework и корнем иерархии типов.

Для просмотра исходного кода .NET Framework для этого типа, в разделе Reference Source.

Пространство имен:   System
Сборка:  mscorlib (в mscorlib.dll)

System.Object
   Все классы, структуры, перечисления и делегаты.

[SerializableAttribute]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
[ComVisibleAttribute(true)]
public class Object

ИмяОписание
System_CAPS_pubmethodObject()

Инициализирует новый экземпляр класса Object.

ИмяОписание
System_CAPS_pubmethodEquals(Object)

Определяет, равен ли заданный объект текущему объекту.

System_CAPS_pubmethodSystem_CAPS_staticEquals(Object, Object)

Определяет, следует ли считать равными указанные экземпляры объектов.

System_CAPS_protmethodFinalize()

Позволяет объекту попытаться освободить ресурсы и выполнить другие операции по очистке перед тем, как объект будет утилизирован сборщиком мусора.

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.

System_CAPS_protmethodMemberwiseClone()

Создает неполную копию текущего объекта Object.

System_CAPS_pubmethodSystem_CAPS_staticReferenceEquals(Object, Object)

Определяет, совпадают ли указанные экземпляры Object.

System_CAPS_pubmethodToString()

Возвращает строковое представление текущего объекта.

System_CAPS_noteПримечание

Исходный код .NET Framework для этого типа см. в разделе Reference Source. Выполнять поиск исходного кода в Интернете, справочник для автономной работы и пошагово источники (включая исправления и обновления) во время отладки; see instructions.

Языки обычно не требуется объявлять наследование от класс Object так, как наследование происходит неявно.

Поскольку все классы в .NET Framework являются производными от Object, каждый метод, определенный в Object класс доступен во всех объектах в системе. Производные классы могут и переопределить некоторые из этих методов, включая:

  • Equals— Поддерживает сравнение объектов.

  • Finalize-Выполняет операции очистки, прежде чем будет автоматически удален объект.

  • GetHashCode— Создает число, соответствующее значению объекта, для поддержки использования хэш-таблицы.

  • ToString— Создает удобочитаемого текста строку, описывающую экземпляр класса.

При создании класса, такие как коллекции, который должен обрабатывать любой тип объекта, можно создать члены класса, принимающие экземпляры Object класса. Тем не менее процесс упаковка-преобразование и распаковка-преобразование типа приводит к снижению производительности. Если известно, что новый класс будет часто обрабатывать определенные типы значений можно использовать один из двух методик для минимизации затрат на упаковки-преобразования.

  • Создание общего метода, принимающую Object тип и набор из перегрузок метода, принимающих значения всех типов, предполагается, что класс обрабатываться. Если существует определенный метод, который принимает тип параметра вызова, вызывается метод определенного типа и упаковка-преобразование не происходит. Если аргумент не метод, который соответствует типу параметра вызова, вызывается метод общие и выполняется упаковка.

  • Спроектируйте ваш тип и его члены как универсальные. Общеязыковая среда выполнения создает закрытого универсального типа, при создании экземпляра этого класса и указывать аргумент универсального типа. Универсальный метод определенного типа и его можно вызывать без упаковки-преобразования параметра вызова.

Несмотря на то, что иногда бывает необходимо создавать классы общего назначения, которые принимают и возвращают Object типов, можно повысить производительность, можно также создать класс конкретного типа для реализации часто используемых типов. Например предоставления класса, относящиеся к установке и получении логические значения, можно избежать затрат упаковка-преобразование и распаковка-преобразование логических значений.

В следующем примере определяется точка типа, производного от Object класса и переопределение множества виртуальных методов Object класса. Кроме того, в примере показано вызывать многие статических и методы экземпляра Object класса.

using System;

// The Point class is derived from System.Object.
class Point 
{
    public int x, y;

    public Point(int x, int y) 
    {
        this.x = x;
        this.y = y;
    }

    public override bool Equals(object obj) 
    {
        // If this and obj do not refer to the same type, then they are not equal.
        if (obj.GetType() != this.GetType()) return false;

        // Return true if  x and y fields match.
        Point other = (Point) obj;
        return (this.x == other.x) && (this.y == other.y);
    }

    // Return the XOR of the x and y fields.
    public override int GetHashCode() 
    {
        return x ^ y;
    }

    // Return the point's value as a string.
    public override String ToString() 
    {
        return String.Format("({0}, {1})", x, y);
    }

    // Return a copy of this point object by making a simple field copy.
    public Point Copy() 
    {
        return (Point) this.MemberwiseClone();
    }
}

public sealed class App {
    static void Main() 
    {
        // Construct a Point object.
        Point p1 = new Point(1,2);

        // Make another Point object that is a copy of the first.
        Point p2 = p1.Copy();

        // Make another variable that references the first Point object.
        Point p3 = p1;

        // The line below displays false because p1 and p2 refer to two different objects.
        Console.WriteLine(Object.ReferenceEquals(p1, p2));

        // The line below displays true because p1 and p2 refer to two different objects that have the same value.
        Console.WriteLine(Object.Equals(p1, p2));

        // The line below displays true because p1 and p3 refer to one object.
        Console.WriteLine(Object.ReferenceEquals(p1, p3));

        // The line below displays: p1's value is: (1, 2)
        Console.WriteLine("p1's value is: {0}", p1.ToString());
    }
}

// This code example produces the following output:
//
// False
// True
// True
// p1's value is: (1, 2)
//

Универсальная платформа Windows
Доступно с 8
.NET Framework
Доступно с 1.1
Переносимая библиотека классов
Поддерживается в: переносимые платформы .NET
Silverlight
Доступно с 2.0
Windows Phone Silverlight
Доступно с 7.0
Windows Phone
Доступно с 8.1

Открытые статические (Shared в Visual Basic) члены этого типа являются потокобезопасными. Члены экземпляров не гарантируется потокобезопасность.

Вернуться в начало
Показ: