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

Тут можно читать онлайн Герберт Шилдт - C# 4.0 полное руководство - 2011 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

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

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

C# 4.0 полное руководство - 2011 - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

// Структуры удобны для группирования небольших объемов данных, using System;

// Определить структуру пакета, struct PacketHeader {

public uint PackNum; // номер пакета public ushort PackLen; // длина пакета }

// Использовать структуру PacketHeader для создания записи транзакции (

// в сфере электронной коммерции, class Transaction {

static uint transacNum = 0;

PacketHeader ph; // ввести структуру PacketHeader в класс Transaction string accountNum; double amount;

public Transaction(string acc, double val) {

// создать заголовок пакета

ph.PackNum = transacNum++;

ph.PackLen =512; // произвольная длина

accountNum = acc; amount = val;

}

// Сымитировать транзакцию, public void sendTransaction() {

Console.WriteLine("Пакет #: " + ph.PackNum +

", Длина: " + ph.PackLen +

",\n Счет #: " + accountNum +

", Сумма: {0:C}\n", amount);

}

}

// Продемонстрировать применение структуры в виде пакета транзакции, class PacketDemo { static void Main() {

Transaction t = new Transaction("31243", -100.12);

Transaction t2 = new Transaction("AB4655", 345.25);

Transaction t3 = new Transaction ("8475-09", 9800.00);

t.sendTransaction (); t2.sendTransaction (); t3.sendTransaction ();

}

}

Вот к какому результату может привести выполнение этого кода.

Счет #: 8475-09, Сумма: $9,800.00

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

Любопытно, что в C++ также имеются структуры и используется ключевое слово struct. Но эти структуры отличаются от тех, что имеются в С#. Так, в C++ структура относится к типу класса, а значит, структура и класс в этом языке практически равноценны и отличаются друг от друга лишь доступом по умолчанию к их членам, которые оказываются закрытыми для класса и открытыми для структуры. А в C# структура относится к типу значения, тогда как класс — к ссылочному типу.

Перечисления

Перечисление представляет собой множество именованных целочисленных констант. Перечислимый тип данных объявляется с помощью ключевого слова enum. Ниже приведена общая форма объявления перечисления:

enum имя { список_перечисления } ;

где имя — это имя типа перечисления, а список_перечисления — список идентификаторов, разделяемый запятыми.

В приведенном ниже примере объявляется перечисление Apple различных сортов яблок.

enum Apple { Jonathan, GoldenDel, RedDel, Winesap,

Cortland, McIntosh };

Следует особо подчеркнуть, что каждая символически обозначаемая константа в перечислении имеет целое значение. Тем не менее неявные преобразования перечислимого типа во встроенные целочисленные типы и обратно в C# не определены, а значит, в подобных случаях требуется явное приведение типов. Кроме того, приведение типов требуется при преобразовании двух перечислимых типов. Но поскольку перечисления обозначают целые значения, то их можно, например, использовать для управления оператором выбора switch или же оператором цикла for.

Для каждой последующей символически обозначаемой константы в перечислении задается целое значение, которое на единицу больше, чем у предыдущей константы. По умолчанию значение первой символически обозначаемой константы в перечислении равно нулю. Следовательно, в приведенном выше примере перечисления Apple константа Jonathan равна нулю, константа GoldenDel — 1, константа RedDel — 2 и т.д.

Доступ к членам перечисления осуществляется по имени их типа, после которого следует оператор-точка. Например, при выполнении фрагмента кода

Console.WriteLine(Apple.RedDel + " имеет значение " +

(int)Apple.RedDel) ;

выводится следующий результат.

RedDel имеет значение 2

Как показывает результат выполнения приведенного выше фрагмента кода, для вывода перечислимого значения используется его имя. Но для получения этого значения требуется предварительно привести его к типу int.

Ниже приведен пример программы, демонстрирующий применение перечисления Apple.

11 Продемонстрировать применение перечисления.

using System;

class EnumDemo {

enum Apple { Jonathan, GoldenDel, RedDel, Winesap,

Cortland, McIntosh };

static void Main() { string[] color = {

"красный",

"желтый",

"красный",

"красный",

"красный",

"красновато-зеленый"

};

Apple i; 11 объявить переменную перечислимого типа

// Использовать переменную i для циклического

// обращения к членам перечисления.

for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

Console.WriteLine(i + " имеет значение " + (int)i);

Console.WriteLine ();

// Использовать перечисление для индексирования массива. for(i = Apple.Jonathan; i <= Apple.McIntosh; i++)

Console.WriteLine("Цвет сорта " + i + " — " + color[ (int)i]);

}

}

Ниже приведен результат выполнения этой программы.

Jonathan имеет значение О GoldenDel имеет значение 1 RedDel имеет значение 2 Winsap имеет- значение 3 Cortland имеет значение 4 McIntosh имеет значение 5

Цвет сорта Jonathan - красный

Цвет сорта GoldenDel - желтый

Цвет сорта RedDel - красный

Цвет сорта Winsap - красный

Цвет сорта Cortland - красный

Цвет сорта McIntosh - красновато-зеленый

Обратите внимание на то, как переменная типа Apple управляёт циклами for. Значения символически обозначаемых констант в перечислении Apple начинаются с нуля, поэтому их можно использовать для индексирования массива, чтобы получить цвет каждого сорта яблок. Обратите также внимание на необходимость производить приведение типов, когда перечислимое значение используется для индексирования массива. Как упоминалось выше, в C# не предусмотрены неявные преобразования перечислимых типов в целочисленные и обратно, поэтому для этой цели требуется явное приведение типов.

И еще одно замечание: все перечисления неявно наследуют от класса System. Enum, который наследует от класса System. ValueType, а тот, в свою очередь, — от класса object.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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