Enum.GetUnderlyingType(Type)有什么作用?

时间:2011-01-04 14:57:19

标签: c# .net enums

我不明白Enum.GetUnderlyingType(Type enumType)

的目的

MSDN documentation也无济于事:

  

返回指定枚举的基础类型。

似乎这会将指定类型的enum转换为......其他内容。 O_O

什么是基础类型?这看起来像实现的一些内部细节。为什么这是公开的?我为什么要关心实施?浏览实际的实现也没有帮助,该方法只是进行一些检查然后调用

[MethodImplAttribute(MethodImplOptions.InternalCall)] 
private static extern Type InternalGetUnderlyingType(Type enumType);

......我找不到来源。

有人可以对此有所了解吗?

4 个答案:

答案 0 :(得分:7)

请注意,您可以通过

指定枚举的基础类型
enum Foo : long { One, Two };

然后GetUnderlyingTypelong返回typeof(Foo)

请注意,基础类型可以是除char类型之外的任何整数类型。

答案 1 :(得分:5)

枚举作为数字存储在内存中。默认情况下,int32。这是一个重要的类型。你可以改变:

public enum z : byte {
  x = 257 // invalid
}

答案 2 :(得分:2)

MSDN

  
    

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

  

e.g。

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

您的基础类型是int

enum Range :long {Max = 2147483648L, Min = 255L};

现在已经很久了。

答案 3 :(得分:1)

这是一篇文章的链接,它提供了一些关于它的作用以及何时使用它的解释。 http://dotnetperls.com/enum-getunderlyingtype