Всем привет, начал читать книгу Programming C#,( все вздохнули с облегчением? ), вот — там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?
Заранее спасибо...
P.S. 2 модераторы — Написал сюда, так как учу в общем то C#, а не С или С++
> Всем привет, начал читать книгу Programming C#,( все вздохнули с облегчением? ), вот — там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?
Для удобства исключительно. Легче запомнить MyEnum.MyValue, чем какой-нибудь 0x0304. Потом енум дает некоторую гарантию того, что в качестве параметра будет передано значение в определенном диапазоне.
Здравствуйте, hugo, Вы писали:
H>Здравствуйте, ironwit, Вы писали:
I>>там вычитал такую штуку как enum. Но по примеру в книге не понял зачем оно вообще нужно. Может ли кто просветить?
H>А это шоб константы выглядели более осмысленно, чем 0xFA23 H>Напр.
так можно и константы осмсленно называть.
Типа
0xFE — Fatal Error
0xBD — Bad Data
VP>так можно и константы осмсленно называть. VP>Типа VP>0xFE — Fatal Error VP>0xBD — Bad Data
Нет, перечисления — это немножко более полезная штука...
Они по сути группируют однородные константы.
И, соответственно, можно легко перебрать константы одной группы, например.
А в совокупности с атрибутом FlagsAttribute они прдставляют собой довольно удобную реализацию битовых флагов, простую в чтении и использовании.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Для удобства исключительно. Легче запомнить MyEnum.MyValue, чем какой-нибудь 0x0304. Потом енум дает некоторую гарантию того, что в качестве параметра будет передано значение в определенном диапазоне.
Здравствуйте, Igor Trofimov, Вы писали:
VP>>так можно и константы осмсленно называть. VP>>Типа VP>>0xFE — Fatal Error VP>>0xBD — Bad Data
iT>Нет, перечисления — это немножко более полезная штука... iT>Они по сути группируют однородные константы. iT>И, соответственно, можно легко перебрать константы одной группы, например. iT>А в совокупности с атрибутом FlagsAttribute они прдставляют собой довольно удобную реализацию битовых флагов, простую в чтении и использовании.
I>P.S. 2 модераторы — Написал сюда, так как учу в общем то C#, а не С или С++
В общем случаю считается, что перечисления лучше простых констант потому, что увеличивает типозащещённость. Если функция принимает в качестве параметра перечесление, то, по ошибке, передать ей что либо другое (константу, значение из другого перечисления итд...) не даст компилятор.
В С++ для enum-ов возможна перегрузка операторов, чего к сожалению, .NET не позволяет.