【问题标题】:Difference between 'enumType' and 'TEnum'“enumType”和“TEnum”之间的区别
【发布时间】:2015-08-09 18:15:35
【问题描述】:

这里是 C# 新手。我在 MSDN 中浏览了 enum 方法,但我无法区分 TEnumenumType 之间的区别。

public static bool TryParse<TEnum>(
string value,
out TEnum result)

public static string[] GetNames(
Type enumType)

这里有什么区别?对于第一种方法,返回enumType result不是更好吗?

【问题讨论】:

标签: c# visual-studio-2010 visual-studio msdn


【解决方案1】:

TEnum 是枚举的通用类型。您可以将任何枚举传递给该方法。

第二种方法是非通用方法,您可以使用 typeof 关键字来识别枚举并将枚举名称作为字符串集合返回

【讨论】:

    【解决方案2】:

    TryParse&lt;TEnum&gt;() 中是generic 方法,TEnum 是泛型类型参数。每当您看到方法、类或接口声明后跟尖括号中的名称时,您就有了泛型类型。泛型用于提供编译时类型检查并通过指定方法要使用的类型来提高性能。

    GetNames 接受 Type 对象。特定的 Type 对象代表特定的类、接口或枚举。和Enum.Parse比较可能更好:

    public static Object Parse(
        Type enumType,
        string value
    );
    

    注意Enum.Parse 返回一个object,这需要转换为TEnum

    直到 .Net 2.0 才添加泛型,因此您将看到许多具有泛型版本和采用 Type 对象的泛型版本的方法。使用reflection 时,非通用版本也很有用。

    【讨论】:

      【解决方案3】:

      第一个例子是generic declaration。通常,您通常只会将其视为 T,但该代码的作者想指出它应该是一个枚举。

      在您的第二个示例中,enumType 只是一个变量名。这两种方法做完全不同的事情,而您正在查看的两个部分用于完全不同的目的。

      【讨论】:

        猜你喜欢
        • 2020-10-29
        • 1970-01-01
        • 2021-12-25
        • 2020-05-10
        • 2014-09-20
        • 2010-10-28
        • 2015-10-04
        • 2012-08-12
        • 2011-02-18
        相关资源
        最近更新 更多