枚举继承自int

sla*_*dau 28 .net c# inheritance enums

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

public enum Blah: int
{
    blah = 0,
    blahblah = 1
}
Run Code Online (Sandbox Code Playgroud)

为什么需要继承int?它需要吗?

Dar*_*rov 35

根据文件:

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

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


SLa*_*aks 13

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

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


Gus*_*ori 6

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

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

这意味着你可以使用byte,sbyte,ushort,int,uint,long,或ulong.

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

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

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

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