Программирование >>  Программирование с использованием ajax 

1 ... 68 69 70 [ 71 ] 72 73 74 ... 396


Этот метод является одним из унаследованных от System.Object (на диаграмме он не показан) и возвращает имя класса объекта в виде строки вместе с именами любых имеющих к нему отношение пространств имен.

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

Класс System.Object

Поскольку все классы унаследованы от System.Object, у всех них имеется доступ как к защищенным, так и к общедоступным членам этого класса, потому ознакомиться с ними совершенно не помешает.

В табл. 9.2 перечислены основные методы System.Object.

Таблица 9.2. Основные методы System.Object

Метод

возвра1цаемого Виртуальный Статический Описание значения

Object о

-Object О (также известный как Finalize (); подробнее о нем будет рассказываться в следующем разделе)

Equals(object)

bool

Нет Представляет собой кон-

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

Нет Представляет собой де-

структор для объектов типа System.Object. Автоматически вызывается деструкторами объектов производных типов; не может вызываться вручную

Нет Сравнивает тот объект, для

которого он был вызван, с другим объектом, и если они равны, возвращает true. В реализации по умолчанию проверяет, ссылаются ли параметры объекта на тот же объект (поскольку объекты являются ссылочными типами). Может переопределяться, если необходимо сделать так, чтобы он сравнивал объекты каким-то другим образом, например, чтобы он сравнивал состояние двух объектов



Окончание табл. 9.2

Метод

возвра1цаемого Виртуальный Статический Описание значения

Equals(object, object)

bool

ReferenceEquals (object, object)

ToString 0

bool

string Да

MemberwiseClone()

object Нет

GetTypeO GetHashCodeO

System .Type

Нет Нет

Сравнивает два передаваемых ему объекта и проверяет, не являются ли они эквивалентными. Эта проверка осуществляется с использованием метода Equals(object). Если оба объекта оказываются нулевыми ссылками, возвращается true

Сравнивает два передаваемых ему объекта и проверяет, не ссылаются ли они на один и тот же экземпляр

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

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

Возвращает тип объекта в виде объекта System.Type

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



Эти методы являются базовыми методами, которые должны обязательно поддерживаться типами объектов в .NET Framework, хотя некоторые из них могут и никогда не использоваться (или применяться только в особых обстоятельствах, как метод GetHashCode, например).

Метод GetType () может быть полезен при внедрении полиморфизма, поскольку позволяет выполнять различные операции с объектами в зависимости от их типа, а не одну и ту же операцию для всех объектов, как это часто бывает. Например, при наличии функции, принимающей параметр типа object (это означает, что ей можно передавать практически все что угодно), можно было бы сделать так, чтобы в случае обнаружения объектов определенного типа выполнялись дополнительные задачи. В частности, с использованием комбинации из метода GetType и операции type of (которая представляет собой С#-операцию, преобразующую имя класса в объект System.Туре) можно было бы обеспечить выполнение операции сравнения, как показано ниже:

if (myObj.GetTypeО == typeof(MyComplexClass)) {

myObj является экземпляром класса MyComplexClass.

Возвращаемый объект System. Туре способен на гораздо большее, но здесь демонстрируется только это. Также полезно переопределять метод ToString, особенно в ситуациях, когда содержимое объекта можно легко представить с помощью одной понятной для человеческого глаза строки. Эти методы System.Object еще не раз будут встречаться в последующих главах, поэтому остальные детали о них можно будет узнать далее.

Конструкторы и деструкторы

При определении класса в С# определять ассоциируемые с ним конструкторы и деструкторы обычно не обязательно, поскольку, если таковые не предоставляются, компилятор добавляет их автоматически во время сборки кода. Однако если требуется, можно предоставлять свои собственные и с их помощью выполнять, соответственно, инициализацию объектов и очистку после их уничтожения.

Простой конструктор можно добавить в класс с помощью такого синтаксиса:

class MyClass {

public MyClassО {

Код конструктора.

Этот конструктор должен иметь то же имя, что и у класса, в котором он содержится, не принимать никаких параметров (что делает его конструктором по умолчанию для данного класса) и быть общедоступным, чтобы с его помощью могли создаваться экземпляры объектов этого класса (более подробно об этом говорилось в главе 8).

Также допускается использовать и приватный конструктор по умолчанию, т.е. такой, который не может применяться для создания экземпляров объектов данного класса (и тем самым превращать класс в несоздаваемый, о чем более подробно рассказывалось в главе 8):

class MyClass



1 ... 68 69 70 [ 71 ] 72 73 74 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика