Enum, наследующий от int
Я нашел это повсюду в этом коде:
public enum Blah: int
{
blah = 0,
blahblah = 1
}
Зачем ему нужно наследовать от int? Нужно ли это когда-либо?
Ответы
Ответ 1
В соответствии с документацией:
Каждый тип перечисления имеет базовый тип, который может быть любым интегральный тип, кроме char. По умолчанию базовый тип перечисления Элементы - int.
Итак, нет, вам не нужно использовать int. Он будет работать с любым интегральным типом. Если вы не укажете, что он будет использовать int по умолчанию, и этот тип будет использоваться для хранения перечисления в памяти.
Ответ 2
Перечисления неявно поддерживаются целыми числами.
: int
просто возвращает значение по умолчанию, как void M();
vs. private void M();
.
Вы также можете создавать перечисления, которые поддерживаются другими типами межстрановых, например enum GiantEnum : long
.
Ответ 3
Вам не нужно, это подразумевается. Согласно MSDN:
Перечисление представляет собой набор именованных констант, базовым типом которых является любой интегральный тип, кроме Char. Если базовый тип явно не объявлен, используется Int32. Enum является базовым классом для всех перечислений в .NET Framework.
Это означает, что вы можете использовать byte
, sbyte
, ushort
, int
, uint
, long
или ulong
.
Также, установив значения так, как вы описали (blah = 0, blahblah = 1), в то время как избыточно, это нормально, поскольку, согласно С# Спецификация
Если объявление элемента перечисления не имеет инициализатора, его связанное значение устанавливается неявно, как показано ниже:
• Если элемент перечисления является первым членом перечисления, объявленным в типе перечисления, его связанное значение равно нулю.
• В противном случае связанное значение элемента перечисления получается путем увеличения связанного значения элемента, предшествующего перечислению, предшествующего элементу, на единицу. Это увеличенное значение должно быть в диапазоне значений, которые могут быть представлены базовым типом, в противном случае возникает ошибка времени компиляции.
Ответ 4
int
по умолчанию является типом любого enum
. Это не нужно явно указывать.
Это более полезно, если вы хотите использовать что-то еще (byte
, long
и друзей).
Ответ 5
В большинстве случаев мне неинтересно, есть ли подпись или без знака, или сколько битов она имеет, поэтому я просто позволяю системе использовать ее по умолчанию, это int.
Однако есть моменты, когда мне все равно, что перечисление представляет собой подписанный 32-битный int, и тогда хорошо дать понять, что мне все равно. Я бы ожидал, что комментарий также прописал почему мне все равно.
Ответ 6
Вы не нуждаетесь, чтобы наследовать от int
, но по умолчанию это делает. Вы можете наследовать от других интегральных типов (byte
, long
и т.д.), Если хотите. Например, если вы хотите сохранить память или пространство столбцов в БД.
Ответ 7
он дает ему числовое значение, то есть все, насколько я знаю
Ответ 8
Вам не нужно наследовать, поскольку базовый тип Enum по умолчанию, int.
http://msdn.microsoft.com/en-us/library/sbbt4032(v=vs.71).aspx
base-type (Optional)
The underlying type that specifies the storage allocated for each enumerator. It can be one of the integral types except char. The default is int.
Ответ 9
"член" перечисления может иметь базовое "значение". Наследование из int указывает вам, какой тип будет стоить.