Главная » C# » Приведение типов в Visual C# (Sharp)

0

Ранее   в   главе   было   рассмотрено   несколько   примеров   приведения   типов.   В   С# имеются  два способа  выполнения  приведения  типов:

•   принудительное  приведение  типов,  которое  можно  применять  с  обычными  тами;

•   приведение  типов,   запрашивающее,   возможно  ли   осуществление   данной   опации.

Рассмотрим  следующую  иерархию:

class Base {

public void Method() { Console.WriteLine("Base.Method");

}

}

class Derived : Base { public new void Method!) {

Console.WriteLine("Derived.Method");

}

}

Следующим  шагом  будет создание экземпляра типа Derived и  приведение  его типа к  базовому типу:

Derived derivedCls = new DerivedO; Base baseCls = derivedCls;

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

При приведении экземпляра базового класса к экземпляру производного класса требуется принудительное приведение. Далее представлен исходный код для прудительного приведения типа (предполагается иерархия наследования с  предущего   приведения).

DerivedClass backToDerived = (DerivedClass)baseCls;

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

Другим способом приведения типов является приведение по запросу, как показано в следующем коде (здесь также предполагается иерархия наследования, исполуемая в данном разделе):

DerivedClass backToDerived = baseCls as DerivedClass;

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

Советы разработчику

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

•    Механизм интерфейсов отличается от механизма наследования. Это два разных решения, хотя в механизме интерфейсов и применяется наследование.

•    На абстрактном уровне интерфейсы представляют идеи о желаемой работе прожения.

•    Выраженные в интерфейсах идеи должны быть общими и применимы к множесенным реализациям приложения для данной области.

•    Идеи реализуются с помощью интерфейсов С#, которые в свою очередь реалуются с помощью классов или структур. Но следует обратить внимание на то, что интерфейсы являются ссылочными типами. Интерфейсы и реализации яяются компонентами.

•    Для создания экземпляра реализации и возвращения объекта интерфейса примяются фабрики. Использование  фабрики  позволяет  пользователю  интерфейса не знать, для какой реализации необходимо создавать экземпляр.

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

•    Компоненты представляют собой базовый способ разработки кода. Они должны быть вашим основным способом разработки кода. До конца книги мы будем иользовать интерфейсы при любом удобном случае. Старайтесь уловить и пять идею в основе интерфейса.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии