这位C#的新手。我正在寻找MSDN浏览enum
方法,但我无法区分TEnum
和enumType
。
public static bool TryParse<TEnum>(
string value,
out TEnum result)
public static string[] GetNames(
Type enumType)
这有什么区别?对于第一种方法,返回enumType result
会不会更好?
答案 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
只是一个变量名称。这两种方法做了完全不同的事情,你正在看的两件作品完全不同。