Difference between 'enumType' and 'TEnum'

本文关键字:TEnum and enumType between Difference | 更新日期: 2023-09-27 18:07:01

c#新手。我正在寻找MSDN浏览enum方法,但我无法分辨TEnumenumType之间的区别。

public static bool TryParse<TEnum>(
string value,
out TEnum result)
public static string[] GetNames(
Type enumType)

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

Difference between 'enumType' and 'TEnum'

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

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

其中TryParse<TEnum>()为泛型方法,TEnum为泛型类型参数。任何时候看到方法、类或接口声明后面跟着尖括号中的名称,就表示它是泛型类型。泛型用于提供编译时类型检查,并通过指定方法要使用的类型来提高性能。

GetNames接受一个Type对象。特定的Type对象表示特定的类、接口或枚举。与Enum比较可能更好。解析:

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

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

泛型直到。net 2.0才被添加,所以你会看到许多方法有一个泛型版本和一个接受Type对象的泛型版本。非通用版本在使用反射时也很有用。

第一个例子是一个泛型声明。通常,您通常只看到它为T,但该代码的作者希望表示它应该是一个enum。

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