【问题标题】:What does Enum.GetUnderlyingType(Type) do?Enum.GetUnderlyingType(Type) 有什么作用?
【发布时间】:2011-01-04 14:57:18
【问题描述】:

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

MSDN documentation 也无济于事:

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

似乎这会将指定类型的enum 转换为...其他东西。 o_O

什么底层类型?这看起来像是实现的一些内部细节。为什么这是公开的?我为什么要关心实施?浏览实际的实现也无济于事,该方法只是进行一些检查然后调用

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

...我找不到来源。

有人能解释一下吗?

【问题讨论】:

标签: c# .net enums


【解决方案1】:

请注意,您可以通过以下方式指定枚举的基础类型

enum Foo : long { One, Two };

然后GetUnderlyingType 将返回longtypeof(Foo)

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

【讨论】:

    【解决方案2】:

    枚举作为数字存储在内存中。默认情况下,int32。那是底层类型。你可以改变它:

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

    【讨论】:

    • 这就是我要找的。谢谢。
    【解决方案3】:

    MSDN:

    每个枚举类型都有一个底层类型,可以是任何整数 字符以外的类型。枚举元素的默认底层类型是 int。

    例如

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

    你的底层类型是一个 int

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

    现在它很长了。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-03
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 2019-09-21
        • 2015-04-15
        • 1970-01-01
        • 2022-08-08
        相关资源
        最近更新 更多