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

Difference between 'enumType' and 'TEnum'

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

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

public static string[] GetNames(
Type enumType)

这里有什么区别?对于第一种方法,用 return enumType result 代替不是更好吗?

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

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

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

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

TryParse<TEnum>()中是一个generic方法,TEnum是泛型类型参数。任何时候你看到一个方法,class,或者接口声明后跟一个尖括号中的名字,你就有了泛型。泛型用于提供编译时类型检查并通过指定方法要使用的类型来提高性能。

GetNames 需要 Type object. A particular Type object represents particular class, interface, or enum. It's probably better to compare to Enum.Parse:

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

请注意 Enum.Parse returns 和 object,这将需要转换为 TEnum

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

时也很有用