编译器错误 CS0449
"class" 或 "struct" 约束必须在其他任何约束之前
对泛型类型或方法的类型参数的约束必须按特定顺序发生: class
或 struct
必须是第一个(如果存在),然后是任何接口约束,最后是任何构造函数约束。 此错误是由于 class
或 struct
约束没有先出现所致。 若要解决此错误,请重新排列约束子句。
下面的示例生成 CS0449。
// CS0449.cs
// compile with: /target:library
interface I {}
public class C4
{
public void F1<T>() where T : class, struct, I {} // CS0449
public void F2<T>() where T : I, struct {} // CS0449
public void F3<T>() where T : I, class {} // CS0449
// OK
public void F4<T>() where T : class {}
public void F5<T>() where T : struct {}
public void F6<T>() where T : I {}
}