Как сделать значение по умолчанию для некоторой константы в enum
Как я могу сделать enum
переменная будет увеличиваться в определенной арифметической прогрессии?
Например:
enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
Теперь значения будут увеличены на 1. Как увеличить значения, скажем, до свидания 2? Что-то вроде:
enum Days {Sat=2, Sun=4, Mon=6, Tue=8, Wed=10, Thu=12, Fri=14};
Должен ли я сделать это вручную для каждого элемента?
2 ответа
Да, на практике вам придется делать это вручную, но вам действительно нужно это делать?
Перечисления, которые не украшены FlagsAttribute
не нужно иметь конкретные значения, назначенные каждому члену, потому что основная цель перечисления состоит в том, чтобы различать определенный набор элементов, и не обязательно отображать эти элементы в определенное значение. В зависимости от того, для чего вам нужны цифры, вполне возможно, что использование картографического решения, внешнего по отношению к enum, будет лучшей разработкой программного обеспечения.
Теоретически вы также можете использовать шаблон T4, чтобы сделать это программно; вы будете писать небольшой код, который автоматически генерирует желаемый исходный код с вашей собственной точки зрения, но для такого простого сценария это излишне.
Я бы рекомендовал держаться подальше от этого подхода, где данные хранятся с перечисляемыми значениями. Вместо этого сделайте перечисление простым и используйте его по назначению: перечисление именованных значений. Затем храните данные в другом месте, используя что-то вроде шаблона интерпретатора или посредника для доступа и изменения данных на лету. Один из подходов заключается в использовании набора или словаря, где ключами являются значения перечисления, а значения - ваши числа.