使用英语阅读

通过


编译器错误 CS0456

类型参数“Type Parameter Name 1”具有“struct”约束,因此“Type Parameter Name 1”不能用作“Type Parameter Name 2”的约束

值类型约束是隐式密封的,因此这些约束不能用作第二个类型参数的约束。 这是因为值类型不可重写。 若要解决此错误,直接将一个值类型约束用于第二个类型参数,而不是通过第一个类型参数间接进行。

示例

下面的示例生成 CS0456。

// CS0456.cs  
// compile with: /target:library  
public class GenericsErrors  
{  
   public class G5<T> where T : struct  
   {  
      public class N<U> where U : T {}   // CS0456  
      public class N2<U> where U : struct {}   // OK  
   }  
}