Герберт Шилдт - C# 4.0: полное руководство

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Герберт Шилдт - C# 4.0: полное руководство краткое содержание

C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

C# 4.0: полное руководство - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Обратите также внимание на то, что в класс TwoDShapeпо-прежнему входит метод ShowDim()и что он не объявляется с модификатором abstract. В абстрактные классы вполне допускается (и часто практикуется) включать конкретные методы, которые могут быть использованы в своем исходном виде в производном классе. А переопределению в производных классах подлежат только те методы, которые объявлены как abstract.

Предотвращение наследования с помощью ключевого слова sealed

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

Для того чтобы предотвратить наследование класса, достаточно указать ключевое слово sealedперед определением класса. Как и следовало ожидать, класс не допускается объявлять одновременно как abstractи sealed, поскольку сам абстрактный класс реализован не полностью и опирается в этом отношении на свои производные классы, обеспечивающие полную реализацию.

Ниже приведен пример объявления класса типа sealed.

sealed class А {

// . . .

}

// Следующий класс недопустим.

class В : A { // ОШИБКА! Наследовать класс А нельзя / / ...

}

Как следует из комментариев в приведенном выше фрагменте кода, класс В не может наследовать класс А, потому что последний объявлен как sealed.

И еще одно замечание: ключевое слово sealedможет быть также использовано в виртуальных методах для предотвращения их дальнейшего переопределения. Допустим, что имеется базовый класс В и производный класс D. Метод, объявленный в классе В как virtual, может быть объявлен в классе D как sealed. Благодаря этому в любом классе, наследующем от класса % предотвращается переопределение данного метода. Подобная ситуация демонстрируется в приведенном ниже фрагменте кода:

class В {

public virtual void MyMethodO { /* ... */ }

}

class D : В {

// Здесь герметизируется метод MyMethodO и

// предотвращается его дальнейшее переопределение,

sealed public override void MyMethodO { /* ... */ }

}

class X : D {

// Ошибка! Метод MyMethodO герметизирован!

public override void MyMethodO { /* ••• */ }

}

Метод MyMethod()герметизирован в классе D, и поэтому не может быть переопределен в классе X.

Класс object

В C# предусмотрен специальный класс object, который неявно считается базовым классом для всех остальных классов и типов, включая и типы значений. Иными словами, все остальные типы являются производными от object. Это, в частности, означает, что переменная ссылочного типа objectможет ссылаться на объект любого другого типа. Кроме того, переменная типа objectможет ссылаться на любой массив, поскольку в C# массивы реализуются как объекты. Формально имя objectсчитается в C# еще одним обозначением класса System.Object, входящего в библиотеку классов для среды .NET Framework.

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

Некоторые из этих методов требуют дополнительных пояснений. По умолчанию метод Equals(object)определяет, ссылается ли вызывающий объект на тот же самый объект, что и объект, указываемый в качества аргумента этого метода, т.е. он определяет, являются ли обе ссылки одинаковыми. Метод Equals(object)возвращает логическое значение true, если сравниваемые объекты одинаковы, в противном случае — логическое значение false. Он может быть также переопределен в создаваемых классах. Это позволяет выяснить, что же означает равенство объектов для создаваемого класса. Например, метод Equals(object)можно определить таким образом, чтобы в нем сравнивалось содержимое двух объектов.

Таблица 11.1 Методы класса object

Метод Назначение

public virtual bool Определяет, является ли вызывающий объект таким же,

Equals(object ob) как и объект, доступный по ссылке оb

public static bool Определяет, является ли объект, доступный по ссылке

Equals(object objA, objA , таким же, как и объект, доступный по ссылке

object objB) objB

protected Finalize() Выполняет завершающие действия перед “сборкой му

сора". В C# метод Finalize() доступен посредством

деструктора

public virtual int Возвращает хеш-код, связанный с вызывающим

GetHashCode() объектом

public Type GetType() Получает тип объекта во время выполнения программы

protected object Выполняет неполное копирование объекта, т.е. копиру

MemberwiseClone() ются только члены, но не объекты, на которые ссылают

ся эти члены

public static bool Определяет, делаются ли ссылки objA и objB на один

ReferenceEquals(obj objA, и тот же объект

object objB)

public virtual string Возвращает строку, которая описывает объект

ToString()

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

Как упоминалось в главе 9, если перегружается оператор ==, то обычно приходится переопределять методы Equals(object)и GetHashCode(), поскольку чаще всего требуется, чтобы метод Equals(object)и оператор == функционировали одинаково. Когда же переопределяется метод Equals(object), то следует переопределить и метод GetHashCode(), чтобы оба метода оказались совместимыми.

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

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0: полное руководство отзывы


Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x