|
Программирование >> Автоматически обновляемые приложения
Перечисления в некоторых случаях удобно использовать перечисления, которые упрощают написание и чтение кода. Рассмотрим несколько примеров использования перечислений. Как получить все элементы перечисления Предположим, у нас имеется абстрактное перечисление 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.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |