'enumType'和'TEnum'之间的区别

时间:2015-08-09 18:15:35

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

这位C#的新手。我正在寻找MSDN浏览enum方法,但我无法区分TEnumenumType

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

public static string[] GetNames(
Type enumType)

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

GetNames会占用Type个对象。特定的Type对象表示特定的类,接口或枚举。与Enum.Parse比较可能更好:

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

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

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

答案 2 :(得分:1)

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

在第二个示例中,enumType只是一个变量名称。这两种方法做了完全不同的事情,你正在看的两件作品完全不同。