sla*_*dau 28 .net c# inheritance enums
我在这段代码中找到了这个地方:
public enum Blah: int
{
blah = 0,
blahblah = 1
}
Run Code Online (Sandbox Code Playgroud)
为什么需要继承int?它需要吗?
SLa*_*aks 13
枚举由整数隐式支持.
: int只是重申了默认,就像void M();对private void M();.
您还可以创建由其他整数类型支持的枚举,例如enum GiantEnum : long.
你不需要,这是隐含的.根据MSDN:
枚举是一组命名常量,其基础类型是除Char之外的任何整数类型.如果未显式声明基础类型,则使用Int32.Enum是.NET Framework中所有枚举的基类.
这意味着你可以使用byte,sbyte,ushort,int,uint,long,或ulong.
另外,按照你所描述的方式设置值(blah = 0,blahblah = 1),虽然冗余,但是可以,因为根据C#规范
如果枚举成员的声明没有初始值设定项,则隐式设置其关联值,如下所示:
•如果枚举成员是枚举类型中声明的第一个枚举成员,则其关联值为零.
•否则,通过将文本上在前的枚举成员的关联值增加1来获得枚举成员的关联值.此增加的值必须在可由基础类型表示的值范围内,否则会发生编译时错误.