Продажи: 1-800-867-1389
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала
Информация
Запрошенная вами тема показана ниже. Однако эта тема не включена в библиотеку.

Object - класс

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

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

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

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

Тип Object предоставляет следующие члены.

  ИмяОписание
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsObject Инициализирует новый экземпляр класса Object.
В начало страницы

  ИмяОписание
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsEquals(Object)Определяет, равен ли заданный объект текущему объекту.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsEquals(Object, Object) Определяет, следует ли считать равными указанные экземпляры объектов.
Защищенный методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsFinalize Позволяет объекту попытаться освободить ресурсы и выполнить другие операции по очистке перед тем, как объект будет утилизирован сборщиком мусора.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetHashCode Играет роль хэш-функции для определённого типа.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsGetType Возвращает объект класса Type для текущего экземпляра.
Защищенный методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsMemberwiseClone Создает "плоскую" копию текущего объекта.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsReferenceEquals Определяет, являются ли указанные экземпляры объектов одним и тем же экземпляром.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsToString Возвращает строковое представление текущего объекта.
В начало страницы

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

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

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

  • Finalize — выполняет операции очистки перед автоматической утилизацией объекта.

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

  • ToString — создаёт понятную для пользователя строку текста, в которой описывается экземпляр класса.

Особенности производительности

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

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

  • Спроектируйте ваш тип и его члены как универсальные. Когда вы создаете объект вашего класса и при этом указываете фактический тип-параметр, среда CLR создает закрытый универсальный тип. При этом универсальный метод специализируется для конкретного типа, и при его вызове упаковка его фактического параметра не происходит.

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

В следующем примере кода определяется тип Point производный от класса 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)
//


.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Любой член этого типа, объявленный как public static (Shared в Visual Basic), является потокобезопасным. Члены экземпляров не обязательно являются потокобезопасными.

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв

Добавления сообщества

Показ:
© 2015 Microsoft