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

Cri*_*scu 4 .net c# enums

我不明白的目的 Enum.GetUnderlyingType(Type enumType)

MSDN文档并没有帮助:

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

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

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

[MethodImplAttribute(MethodImplOptions.InternalCall)] 
private static extern Type InternalGetUnderlyingType(Type enumType);
Run Code Online (Sandbox Code Playgroud)

......我找不到源头.

任何人都可以对此有所了解吗?

jas*_*son 7

请注意,您可以指定enum via的基础类型

enum Foo : long { One, Two };
Run Code Online (Sandbox Code Playgroud)

然后GetUnderlyingType是要返回longtypeof(Foo).

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


fej*_*oco 6

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

public enum z : byte {
  x = 257 // invalid
}
Run Code Online (Sandbox Code Playgroud)