次の方法で共有


コンパイラ エラー CS0312

更新 : 2007 年 11 月

エラー メッセージ

型 '型 1' はジェネリック型またはメソッド '名前' 内で型パラメータ '名前' として使用できません。Null 許容型 '型 1' は、'型 2' の制約を満たしていません。

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 非許容型値との間でさまざまな種類の変換を実行できます。

参照

参照

null 許容型 (C# プログラミング ガイド)