英語で読む

次の方法で共有


コンパイラ エラー CS0456

型パラメーター 'Type Parameter Name 1' に 'struct' 制約があるため、'Type Parameter Name 1' を 'Type Parameter Name 2' の制約として使用することはできません

値型制約が暗黙的にシールされるため、これらの制約を 2 番目の型パラメーターで制約として使用することはできません。 これは、値型をオーバーライドできないためです。 このエラーを解決するには、値型制約を最初の型パラメーターによって間接的に配置するのではなく、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  
   }  
}