Перечисления C# и Дублирующиеся Значения - опасности?

На практике различие находится в месте, где препроцессор ищет включенный файл.

Для #include препроцессор ищет зависящим от реализации способом, обычно поисковыми каталогами, предопределенными компилятором/IDE. Этот метод обычно используется для включения стандартных заголовочных файлов библиотеки.

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

А больше полного описания доступно в документации GCC относительно путей поиска .

5
задан Kevin Anderson 30 July 2009 в 17:56
поделиться

3 ответа

Непонятно, чего вы пытаетесь достичь, но мне это не нравится. Например, добавление другой записи в перечисление после «Duplicate» примет значение 0, если вы явно не установите это значение снова.

1
ответ дан 14 December 2019 в 01:13
поделиться

Может быть полезно указать значения псевдонима перечисления если у вас есть флаги enum. Например,

[Flags]
enum Rows {
  Even = 0x01,
  Odd = = 0x02,
  All = Even | Odd
}

Однако, если вы прочитаете руководство по перечислениям в Framework Design Guidelines Квалины и Абрамса, вы найдете следующий совет:

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

и

НЕ включают контрольные значения в перечисления.

Наличие текущей версии является контрольным значением.

Эти рекомендации предназначены для разработки фреймворка, и если вы просто хотите использовать перечисление внутри своего приложения, это может не иметь значения, если вы нарушите эти рекомендации. Однако Microsoft разработала эти рекомендации, чтобы избежать распространенных ошибок, когда другим разработчикам приходится использовать ваш код.

5
ответ дан 14 December 2019 в 01:13
поделиться

Я не вижу в этом ничего плохого и иногда делаю то же самое. Бывают случаи, когда метод (особенно собственный P / Invoke для APi, который со временем вырос) может принимать одни и те же числовые значения, но означают что-то другое, поэтому мне нравится иметь имя значения перечисления, которое описывает использование.

3
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: