Enum.GetUnderlyingType(Type) 的作用是什么?
我不明白 Enum.GetUnderlyingType(Type enumType)
的目的
MSDN 文档 也没有帮助:
返回指定枚举的基础类型。
看起来这会将指定类型的 enum
转换为...其他东西。 o_O
什么是底层类型?这看起来像是实现的一些内部细节。为什么这是公开的?我为什么要关心实施?浏览实际的实现也没有帮助,该方法只是进行一些检查然后调用
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern Type InternalGetUnderlyingType(Type enumType);
...我找不到源代码。
有人能解释一下吗?
I don't understand the purpose of Enum.GetUnderlyingType(Type enumType)
The MSDN documentation doesn't help either:
Returns the underlying type of the specified enumeration.
It seems that this converts a specified type of enum
into... something else. o_O
What IS an underlying type? This looks like some internal details of the implementation. Why is this public? Why would I care about the implementation? Browsing the actual implementation doesn't help either, the method just does some checks then calls
[MethodImplAttribute(MethodImplOptions.InternalCall)]
private static extern Type InternalGetUnderlyingType(Type enumType);
... to which I can't find the source.
Can anybody shed some light on this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
请注意,您可以通过以下方式指定枚举的基础类型
,然后
GetUnderlyingType
将为typeof(Foo)
返回long
。请注意,基础类型可以是除
char
类型之外的任何整型。Note that you can specify the underlying type of an enum via
And then
GetUnderlyingType
is going to returnlong
fortypeof(Foo)
.Note that the underlying type can be any integral type except for
char
types.枚举作为数字存储在内存中。默认情况下,int32。这就是底层类型。你可以改变这一点:
Enums are stored in memory as numbers. By default, int32. That's the underlyting type. You can change that:
根据 MSDN:
例如,
您的基础类型是 int
而现在它是 long 。
Per MSDN:
e.g.
You're underlying type is an int
And now it's long.
这是一篇文章的链接,其中提供了有关它的作用以及何时使用它的一些解释。
http://dotnetperls.com/enum-getunderlyingtype
Here is a link to an article that gives some explanations about what it does and when to use it.
http://dotnetperls.com/enum-getunderlyingtype