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

Простой ответ на Ваш вопрос: нет, нет никакого простого пути. Существует большое обходные решения.

действительно не должно быть простым путем, из-за того, каковы генераторы: способ произвести последовательность значений , не содержа последовательность в памяти . Таким образом, нет никакого обратного обхода.

Вы могли записать функцию has_next или возможно даже хлопнуть ее на генераторе как метод с необычным декоратором, если бы Вы хотели.

5
задан user158485 8 September 2009 в 16:54
поделиться

7 ответов

Я не знаю соглашения, но как насчет

public enum EthernetLinkSpeed {
 Link10BaseT, Link1000BaseT, LinkDisconnected
}
11
ответ дан 18 December 2019 в 08:29
поделиться

Я просто ищу в этом случае что-то более наглядное. Например, поскольку у вас есть значение перечисления «Disconnected», я бы использовал что-то вроде:

public enum EthernetLinkSpeed {
    Connected10BaseT,
    Connected100BaseT,
    Connected1000BaseT,
    Disconnected
}

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

4
ответ дан 18 December 2019 в 08:29
поделиться

Не прямой ответ, но встроенное перечисление NetworkInterfaceType включает следующие значения:

 Ethernet, Ethernet3Megabit, FastEthernetT, FastEthernetFx, GigabitEthernet

На мой вкус это немного некрасиво, но я мог бы рассмотреть возможность использования префикса Ethernet для вашего перечисления:

public enum EthernetLinkSpeed
{
    [Description("10BASE-T")]
    Ethernet10BaseT,

    [Description("100BASE-T")]
    Ethernet100BaseT,

    [Description("1000BASE-T")]
    Ethernet1000BaseT,

    [Description("Disconnected")]
    Disconnected
}
2
ответ дан 18 December 2019 в 08:29
поделиться

Я не уверен, существует ли соглашение, но что-то вроде этого может быть субъективно менее «уродливым»:

public enum EthernetLinkSpeed {

    [Description("10BASE-T")]
    TenBaseT,

    [Description("100BASE-T")]
    OneHundredBaseT,

    [Description("1000BASE-T")]
    OneThousandBaseT,

    [Description("Disconnected")]
    Disconnected
}
1
ответ дан 18 December 2019 в 08:29
поделиться

Обычно мы ставим перед ними префикс 'e'

public enum EthernetLinkSpeed
{
    e10BaseT,
    e100BaseT,
    e1000BaseT,
    Disconnected
}

Мы имеем дело с большим количеством разрешений видео, 720p и т. Д., Поэтому мы используем e720p. В вашем случае, я думаю, лучше использовать имена: Ethernet, FastEthernet и GigabitEthernet.

1
ответ дан 18 December 2019 в 08:29
поделиться

Как вы заметили, имена важный. Так что иногда полезно исследовать неочевидные альтернативы.

Совершенно другая альтернатива:

public enum EthernetLinkSpeed {

  [Description("10BASE-T")]
  MegabitSlow,

  [Description("100BASE-T")]
  MegabitFast,

  [Description("1000BASE-T")]
  Gigabit,

  [Description("Disconnected")]
  Disconnected
}
0
ответ дан 18 December 2019 в 08:29
поделиться

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

0
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

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