насчет enum
От: ironwit Украина  
Дата: 09.02.04 08:39
Оценка:
Всем привет, начал читать книгу Programming C#,( все вздохнули с облегчением? ), вот — там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?

Заранее спасибо...

P.S. 2 модераторы — Написал сюда, так как учу в общем то C#, а не С или С++
... << RSDN@Home 1.1.3 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re: насчет enum
От: Воронков Василий Россия  
Дата: 09.02.04 08:46
Оценка:
> Всем привет, начал читать книгу Programming C#,( все вздохнули с облегчением? ), вот — там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?

Для удобства исключительно. Легче запомнить MyEnum.MyValue, чем какой-нибудь 0x0304. Потом енум дает некоторую гарантию того, что в качестве параметра будет передано значение в определенном диапазоне.
Posted via RSDN NNTP Server 1.8 beta
Re: насчет enum
От: hugo Австрия  
Дата: 09.02.04 08:53
Оценка:
Здравствуйте, ironwit, Вы писали:

I>там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?


А это шоб константы выглядели более осмысленно, чем 0xFA23
Напр.

/// <summary>
/// Режимы открытия формы редактирования.
/// </summary>
public enum EditModes{New = 1, Edit = 2}


а то в коде

if(mode == 1)
...

звучит как-то не убедительно
Re[2]: насчет enum
От: V.Petrovski Беларусь  
Дата: 09.02.04 08:58
Оценка:
Здравствуйте, hugo, Вы писали:

H>Здравствуйте, ironwit, Вы писали:


I>>там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?


H>А это шоб константы выглядели более осмысленно, чем 0xFA23

H>Напр.

так можно и константы осмсленно называть.
Типа
0xFE — Fatal Error
0xBD — Bad Data

Это же конечно прикол, не думайте что я так пишу

[skipped]
... << RSDN@Home 1.1.2 stable Rammstein — [Klavier]>>
Re[3]: насчет enum
От: Igor Trofimov  
Дата: 09.02.04 09:10
Оценка: 13 (2)
VP>так можно и константы осмсленно называть.
VP>Типа
VP>0xFE — Fatal Error
VP>0xBD — Bad Data

Нет, перечисления — это немножко более полезная штука...
Они по сути группируют однородные константы.
И, соответственно, можно легко перебрать константы одной группы, например.
А в совокупности с атрибутом FlagsAttribute они прдставляют собой довольно удобную реализацию битовых флагов, простую в чтении и использовании.
Re[2]: насчет enum
От: ironwit Украина  
Дата: 09.02.04 09:17
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Для удобства исключительно. Легче запомнить MyEnum.MyValue, чем какой-нибудь 0x0304. Потом енум дает некоторую гарантию того, что в качестве параметра будет передано значение в определенном диапазоне.


спасибо
... << RSDN@Home 1.1.3 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re[4]: насчет enum
От: ironwit Украина  
Дата: 09.02.04 09:24
Оценка:
Здравствуйте, Igor Trofimov, Вы писали:

VP>>так можно и константы осмсленно называть.

VP>>Типа
VP>>0xFE — Fatal Error
VP>>0xBD — Bad Data

iT>Нет, перечисления — это немножко более полезная штука...

iT>Они по сути группируют однородные константы.
iT>И, соответственно, можно легко перебрать константы одной группы, например.
iT>А в совокупности с атрибутом FlagsAttribute они прдставляют собой довольно удобную реализацию битовых флагов, простую в чтении и использовании.


спасибо Внимательно почитаю про атрибуты...
... << RSDN@Home 1.1.3 beta 1 >>
Я не умею быть злым, и не хочу быть добрым.
Re: насчет enum
От: Tom Россия http://www.RSDN.ru
Дата: 09.02.04 11:21
Оценка:
I>P.S. 2 модераторы — Написал сюда, так как учу в общем то C#, а не С или С++

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

В С++ для enum-ов возможна перегрузка операторов, чего к сожалению, .NET не позволяет.
... << RSDN@Home 1.1.0 stable >>
Народная мудрось
всем все никому ничего(с).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.