英語で読む

次の方法で共有


コンパイラ エラー CS0312

型 'type1' をジェネリック型の型パラメーター 'name' またはメソッド 'name' として使用することはできません。 Null 許容型 'type1' が 'type2' の制約を満たしていません。

null 許容値型は、対応する null 非許容型とは異なります。両者の間には暗黙の参照変換または ID 変換は存在しません。 null 許容型のボックス化変換は、ジェネリック型の制約を満たしません。 次の例では、1 番目の型パラメーターが Nullable<int> 、2 番目の型パラメーターは System.Int32です。

このエラーを解決するには

  1. 制約を削除します。

  2. 次の例では、2 番目の型引数を int? または objectにします。

次のコードでは CS0312 が生成されます。

// cs0312.cs  
class Program  
{  
    static void MTyVar<T, U>() where T : U { }  
  
    static int Main()  
    {  
        MTyVar<int?, int>(); // CS0312  
        return 1;  
    }  
}  

null 許容値型と null 非許容型は異なりますが、null 許容と null 非許容の値の間では、さまざまな種類の変換を実行できます。

関連項目