Экспорт (0) Печать
Развернуть все
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

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 Создает неполную копию текущего объекта Object.
Открытый методСтатический членПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsReferenceEqualsОпределяет, совпадают ли указанные экземпляры Object.
Открытый методПоддерживается платформой XNA FrameworkПоддерживается в Переносимая библиотека классовПоддерживается в версии: Приложения .NET для Магазина WindowsToStringВозвращает строку, представляющую текущий объект.
В начало страницы

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

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

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

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

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

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

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

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

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

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

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

В следующем примере кода определяется производный от класса Object тип Point, и осуществляется переопределение множества виртуальных методов класса 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), является потокобезопасным. Члены экземпляров не обязательно являются потокобезопасными.

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

ДОБАВИТЬ
Показ:
© 2014 Microsoft