我看一下Enum.TryParse的定义:
public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct, new();
并想知道new()
在这里意味着什么。
答案 0 :(得分:6)
答案 1 :(得分:1)
这是泛型参数的约束。这意味着TEnum
必须具有无参数的公共构造函数(并允许您执行new TEnum()
)。结帐MSDN page了解更多详情和其他类型的约束。
答案 2 :(得分:1)
这是一个泛型类型约束,要求泛型类型参数TEnum
必须支持默认构造函数(可以在没有参数的情况下新建)。
答案 3 :(得分:1)
这意味着TEnum类型必须能够使用
var x = new TEnum();
答案 4 :(得分:1)
它基本上说你只能在具有公共无参数构造函数的类型上使用它,即:你可以做的地方:
var something = new TEnum();
这允许您强制您可以在内部创建类型。
有关详细信息,请参阅C# new Constraint。
答案 5 :(得分:1)
new()作为泛型类型限制意味着用作泛型参数的类型必须具有带给定参数的构造函数;在这里,它必须有一个无参数的默认构造函数。