Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 47

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 41 42 43 44 45 46 < 47 > 48 49 50 51 52 53 .. 404 >> Следующая


directionByte = (byte)n(yDirection;

Такое же явное приведение типа требуется и для обратного преобразования, когда тип byte нужно преобразовать в тип orientation. Например, для преобразования переменной типа byte с именем myByte в тип orientation и присвоения получившегося значения переменной myDirection можно воспользоваться следующим кодом:

myDirection » forientationJmyBytej

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

Для получения строкового значения нз значения перечислимого типа можно использовать Convert.ToStringО :

directionString = Convert.ToString(myDirection);

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

В качестве альтернативы можно воспользоваться командой ToString о самой переменной. Следующий код даст точно такой же результат, что и использование Convert.ToString():

. directionString = щ/Direction.ToStringО ;

Обратное преобразование значения тнпа string в значение перечислимого тнпа также возможно, однако для этого потребуется немного более сложный синтаксис. Для преобразований такого рода существует специальная команда Enum.Parsed, которая используется следующим образом:

(пврвчислиыыйТип) Bnum. Parse (typeof (перечислимыЙТип),

эначеиисСтрокмЛеречислиыогоТжха);

Здесь задействован еще один оператор — typeof, который позволяет получать тип своего операнда. Мы могли бы воспользоваться нм для нашего перечислимого типа orientation следующим образом:

string myString = 'north'; '

orientation щ/Direction = [orientation) Enum. Parse (typeof (orientation, myString)j >

Естественно, далеко не каждое строковое значение будет соответствовать какому-либо значению тнпа orientation. Использование значения, которому ие соответствует ни одно из значений перечислимого тнпа, приведет к возникновению ошибки. Как и все в С#, эти значения чувствительны к регистру, поэтому мы получим ошибку даже в том случае, если наша строка будет соответствовать перечислимому значению во всем, кроме регистра (например, если переменной irystring будет присвоено значение “North” вместо “north”).
90 _______ __________________Глава 5

Структуры

Еще одним типом переменной, который мы будем рассматривать, является struct {сокращение от слова structure — “струюура"). Структуры вполне соответствуют своему названию: это структуры данных, которые составлены из информации различного характера, возможно, из данных различных типов. Онн позволяют программистам описывать свои собственные типы переменных, для которых данная структура является базовой. В качестве примера предположим, что нам необходимо хранить информацию о маршруте из одной точки в другую, включающую направление и расстояние в милях. Для простоты в качестве направления будет использоваться только одна из четырех сторон света (так что для описания направления вполне подойдёт перечислимый тип orientation), а длина маршрута будет представлена типом double.

В этом случае мы могли бы использовать две разные переменные, написав уже знакомый нам код:

orientation myDirection; double myDietance;

В таком подходе с использованием двух переменных нет ничего плохого, однако намного удобней (особенно если маршрутов много) хранить всю эту информацию в одном месте.

Описание структур

Для описания структур используется ключевое слово struct: etxuct <лняТгтя>

{

<обляшлвиивЧпвма>

В разделе <объявлеииеЧлена> содержатся объявления переменных (они называются полями) практически в обычном формате. Объявление каждого члена имеет следующий вид:

<доступ> <ТИП> <ИМЯ>/ .

Для того чтобы код, обращающийся к структуре, имел доступ к ее полям, в разделе <доступ> следует использовать ключевое слово public (общий). Например:

вtract route {

public orientation direction;

public double distance)

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

route полисе;

Для получения доступа к отдельным полям этой составной переменной следует использовать точку:

iqyRoute.direction « orientation.north] щуRoute.distance >3.5,*

Давайте рассмотрим использование этого типа на примере.
Дополнительные сведения о переменных

91

Прантинум: использование структуры

1. Создайте новое консольное приложение с именем ch05Ex03 В директории C:\BegCSharp\Chapter5.

2. Добавьте следующий код в ciaasi.es;

namespace Ch05Ex03

enum orientation : byte (

north ¦ 1, south “ 2, east * 3, west = 4

> . struct route (

public orientation direction; public double distance;
Предыдущая << 1 .. 41 42 43 44 45 46 < 47 > 48 49 50 51 52 53 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.