Программирование >>  Автоматически обновляемые приложения 

1 ... 11 12 13 [ 14 ] 15 16 17 ... 170


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

в некоторых случаях удобно использовать перечисления, которые упрощают написание и чтение кода. Рассмотрим несколько примеров использования перечислений.

Как получить все элементы перечисления

Предположим, у нас имеется абстрактное перечисление Cats, состоящее из имен котов. Обратите внимание, что первому элементу перечисления было присвоено значение 3, второму- значение 5, а остальные члены перечисления получают значения 6, 7 и 8 соответственно. Мы хотим получить значения всех элементов перечисления и их имена. Нам на помощь придут методы

Enum. GetNames И Enum. GetValues, КОТОрые И ПОЗВОЛЯЮТ уЗНатЬ ЭТИ ДаННЫе

(листинг 2.32).

; Листинг 2.32. Получение имен и значений перечисления

enum Cats { Рыжик = 3, Барсик = 5, Мурзик, Васька, Пушок

private void buttonl Click(object sender, EventArgs e) {

Перечисляем все элементы перечисления

string[] catNames = Enum.GetNames(typeof(Cats)) ;

foreach (string s in catNames) {

listBoxl.Items.Add(s);

Запустив проект, вы увидите на экране длинную строку в виде последовательности цифр, разделенных дефисами. Если вы хотите получить строку без

дефисов, то используйте метод ToString ( N ) .

Примечание

Примеры, иллюстрирующие работу с числами, вы найдете в проекте Num-bersSamples на прилагаемом диске.



В библиотеке классов .NET Framework имеется огромное количество перечислений. Например, имеется перечисление KnownCoior, которое содержит все цвета, зарегистрированные в системе. Если мы хотим получить список этих цветов, то используем такую же технику (листинг 2.33), которую мы использовали в предыдущем примере.

\ Листинг 2.33. Получение имен всех цветов системы

private void button2 Click(object sender, EventArgs e) {

Получаем массив строк, содержащих все цвета в системе string[] allcolors =

Enum.GetNames(typeof(System.Drawing.KnownCoior));

listBoxl.Items.Clear();

Выводим все имена в список listBoxl.Items.AddRange(allcolors);

Другой вариант

foreach (string s m allcolors)

listBoxl. Items. Add (s) ;

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

Перечисляем все значения перечисления

int[] valCats = (int[])Enum.GetValues(typeof(Cats));

foreach (int val in valCats) {

listBoxl.Items.Add(val.ToString());

MessageBox.Show(catNames[3].ToString()); MessageBox.Show(valCats[3].ToString());



Листинг 2.34. Передача строки в имена перечисления

private void listBoxl SelectedIndexChanged(object sender, EventArgs e) {

Object ColorEnum;

ColorEnum = System.Enum. Parse (typeof(KnownColor),listBoxl.Text) ; KnownColor SelectedColor = (KnownColor)ColorEnum;

this.BackColor = System.Drawing.Color.FromKnownColor(SelectedColor)

Примечание

Пример находится в папке EnumDemo на прилагаемом компакт-диске.

Заключение

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

нужно выбранный в списке текст сначала преобразовать в значение KnownColor, а затем передать полученное значение методу Color. FromKnowCoior. Это проиллюстрировано В листинге 2.34.



1 ... 11 12 13 [ 14 ] 15 16 17 ... 170

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