我不明白Enum.GetUnderlyingType(Type enumType)
MSDN documentation也无济于事:
返回指定枚举的基础类型。
似乎这会将指定类型的enum
转换为......其他内容。 O_O
是什么是基础类型?这看起来像实现的一些内部细节。为什么这是公开的?我为什么要关心实施?浏览实际的实现也没有帮助,该方法只是进行一些检查然后调用
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern Type InternalGetUnderlyingType(Type enumType);
......我找不到来源。
有人可以对此有所了解吗?
答案 0 :(得分:7)
请注意,您可以通过
指定枚举的基础类型enum Foo : long { One, Two };
然后GetUnderlyingType
将long
返回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