枚举继承自int

时间:2011-06-14 19:27:02

标签: c# .net inheritance enums

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

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

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

9 个答案:

答案 0 :(得分:31)

根据documentation

  

每个枚举类型都有一个   基础类型,可以是任何类型   整数类型除了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中所有枚举的基类。

这意味着您可以使用bytesbyteushortintuintlongulong

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

  

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

     

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

     

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

答案 3 :(得分:3)

int默认为任何enum的类型。它不需要明确声明。

当您想要使用其他内容(bytelong和朋友)时,它会更有用。

答案 4 :(得分:1)

大部分时间我都不在乎枚举是有符号还是无符号,或者它有多少位,所以我只是让系统使用它的默认值为int。

然而,有时候我确实认为枚举是一个带符号的32位int,然后很清楚我确实很关心。我希望评论也能说明为什么我关心。

答案 5 :(得分:0)

不从int继承,但默认情况下会这样做。如果您愿意,可以继承其他整数类型(bytelong等)。例如,如果您想在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的继承告诉你该值将采用什么类型。