枚举inheritance自int

我在这段代码中找到了这个地方:

public enum Blah: int { blah = 0, blahblah = 1 } 

为什么需要inheritanceint? 它需要吗?

根据文件 :

每个枚举类型都有一个底层类型,除了char之外,它可以是任何整数类型。 枚举元素的默认基础类型是int。

所以,不,你不需要使用int。 它适用于任何整数类型。 如果你没有指定任何它将使用int作为默认值,它将用于将枚举存储到内存中。

枚举由整数隐式支持。
: int只是重写默认值,就像void M(); vs. private void M();

您还可以创建由其他enum GiantEnum : long类型支持的enum GiantEnum : long ,例如enum GiantEnum : long

你不需要,这是隐含的。 根据MSDN :

枚举是一组命名常量,其基础类型是除Char之外的任何整数类型。 如果未显式声明基础类型,则使用Int32。 Enum是.NET Framework中所有枚举的基类。

这意味着您可以使用bytesbyteushortintuintlongulong

此外,按照您所描述的方式设置值(blah = 0,blahblah = 1),虽然是冗余的,但是可以,因为根据C#规范

如果枚举成员的声明没有初始值设定项,则隐式设置其关联值,如下所示:

•如果枚举成员是枚举类型中声明的第一个枚举成员,则其关联值为零。

•否则,通过将文本上在前的枚举成员的关联值增加1来获得枚举成员的关联值。 此增加的值必须在可由基础类型表示的值范围内,否则会发生编译时错误。

默认情况下, int是任何enum的类型。 它不需要明确声明。

当你想使用别的东西( bytelong和朋友)时,它会更有用。

大多数时候我不关心枚举是有符号还是无符号,或者它有多少位,所以我只是让系统使用它的默认值为int。

然而,有时候我确实认为枚举是一个带符号的32位int,然后很清楚我确实很关心。 我期待一条评论,并说出我关心的原因

您不需要从intinheritance,但默认情况下也是如此。 如果需要, 可以inheritance其他整数类型( bytelong整数等)。 例如,如果要在DB中保存内存或列空间。

它给它一个数值,就我所知而言就是全部

您不需要inheritance,因为默认情况下,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. 

枚举“成员”可以具有潜在的“价值”。 int的inheritance告诉你该值的类型。