В C # возможно ли украсить тип Enum атрибутом или сделать что-то еще, чтобы указать, каким должно быть значение по умолчанию, без изменения значений? Необходимые числа могут быть установлены в камне по любой причине, и было бы удобно по-прежнему контролировать по умолчанию.
enum Orientation
{
None = -1,
North = 0,
East = 1,
South = 2,
West = 3
}
Orientation o; // Is 'North' by default.
int
s в аннотации не имеет смысла , просто потому, что они реализованы в виде числовых типов. Мы можем реализовать перечисления в виде строк, и это не изменит их полезность. Я считаю ответ здесь ограничением выразительности языка C #; ограничение, безусловно, не присуще идее «отличить ценности от ограниченного набора».
enum
s как о конструкциях уровня типа, в частности, как о типах суммы (или посмотрите здесь . То есть рассматривайте каждое перечисление как отдельный тип, где все значения этого типа отличаются от значений всех остальных перечислений. Исходя из такого мышления, перечисления не могут разделить какое-либо значение, и, действительно, эта абстракция разваливается, если учесть, что значение по умолчанию 0
может быть или не быть действительным для данного перечисления, и оно просто добавлено в каждое перечисление.