Метод экземпляра класса Object | Описание |
---|---|
Equals() | По умолчанию возвращает true (истина), когда сравниваемые элементы ссылаются на один и тот же элемент в памяти. Поэтому используется для сравнения объектных ссылок, а не состояний объектов. Обычно переопределяется так, чтобы значение true возвращалось тогда, когда сравниваемые объекты имеют одинаковые значения внутреннего состояния (те, одинаковую семантику значений). При переопределении Equals() следует также переопределить GetHashCode() |
GetHashCode() | Возвращает целое значение, идентифицирующее объект в памяти. Если вы собираетесь разместить определяемые вами типы в типе System.Collections.Hashtable, рекомендуется переопределить заданную по умолчанию реализацию этого члена |
GetType() | Возвращает объект System.Туре, полностью описывающий данный элемент. Это RTTI-метод (RunTime Type Identification – идентификация типа в среде выполнения), доступный для всех объектов (соответствующие вопросы обсуждаются в главе 12) |
ToString() | Возвращает строковое представление данного объекта в формате пространствоИмен.имяТипа (т.е. полное, или абсолютное имя). Если тип определен не в рамках пространства имен, возвращается только имяТипа. Этот метод может переопределяться подклассом и возвращать не абсолютное имя, а строку пар имен и значений, представляющих внутреннее состояние объекта |
Finalize() | Этот защищенный метод (если он переопределен) вызывается средой выполнения .NET, когда объект удаляется из динамической памяти. Соответствующий процесс сборки мусора рассматривается в главе 5 |
MemberwiseClone() | Защищенный метод, возвращающий новый объект, который является "почленной" копией данного объекта. Если объект содержит ссылки на другие объекты, то копируются ссылки на соответствующие типы (т.е. выполняется поверхностное копирование). Если объект содержит типы, характеризуемые значениями, получаются полные копии значений |
Поведение System.Object, заданное по умолчанию
Чтобы продемонстрировать некоторые особенности принятого по умолчанию поведения базового класса System.Object, рассмотрим класс Person (персона), определенный в пользовательском пространстве имен ObjectMethods.
// Ключевое слово 'namespace' обсуждается в конце этой славы.
namespace ObjectMethods {
class Person {
public Person(string fname, string lname, string s, byte a) {
firstName = fname; lastName = lname; SSN = s; age = a;
}
public Person() {}
// Персональные данные (данные состояния).
public string firstMame;
public string lastName;
public string SSN;
public byte age;
}
}
Теперь используем тип Person в рамках метода Main().
static void Main(string[] args) {