我在这段代码中找到了这个地方:
public enum Blah: int
{
blah = 0,
blahblah = 1
}
为什么需要继承int?它需要吗?
答案 0 :(得分:31)
每个枚举类型都有一个 基础类型,可以是任何类型 整数类型除了char。默认 枚举的基础类型 elements是int。
所以,不,你不需要使用int。它适用于任何整数类型。如果你没有指定任何它将使用int作为默认值,它将用于将枚举存储到内存中。
答案 1 :(得分:12)
枚举由整数隐式支持
: int
只需重新设定默认值,就像void M();
与private void M();
一样。
您还可以创建由其他整数类型支持的枚举,例如enum GiantEnum : long
。
答案 2 :(得分:5)
你不需要,这是隐含的。 According to MSDN:
枚举是一组命名常量,其基础类型是除Char之外的任何整数类型。如果未显式声明基础类型,则使用Int32。 Enum是.NET Framework中所有枚举的基类。
这意味着您可以使用byte
,sbyte
,ushort
,int
,uint
,long
或ulong
另外,按照你所描述的方式设置值(blah = 0,blahblah = 1),虽然是冗余的,但是,根据C# Specification
如果枚举成员的声明没有初始值设定项,则隐式设置其关联值,如下所示:
•如果枚举成员是枚举类型中声明的第一个枚举成员,则其关联值为零。
•否则,通过将文本上在前的枚举成员的关联值增加1来获得枚举成员的关联值。此增加的值必须在可由基础类型表示的值范围内,否则会发生编译时错误。
答案 3 :(得分:3)
int
默认为任何enum
的类型。它不需要明确声明。
当您想要使用其他内容(byte
,long
和朋友)时,它会更有用。
答案 4 :(得分:1)
大部分时间我都不在乎枚举是有符号还是无符号,或者它有多少位,所以我只是让系统使用它的默认值为int。
然而,有时候我确实认为枚举是一个带符号的32位int,然后很清楚我确实很关心。我希望评论也能说明为什么我关心。
答案 5 :(得分:0)
您 不从int
继承,但默认情况下会这样做。如果您愿意,可以继承其他整数类型(byte
,long
等)。例如,如果您想在DB中保存内存或列空间。
答案 6 :(得分:-1)
它给它一个数值,就我所知而言就是全部
答案 7 :(得分:-1)
您不需要继承,因为默认情况下,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.
答案 8 :(得分:-1)
枚举“成员”可以具有潜在的“价值”。 int的继承告诉你该值将采用什么类型。