ジェネリック パラメーターとしての Null 許容型
int? などの Null 許容値型は、値を保持するか null である可能性を表します。 Null 許容データの処理には便利ですが、汎用パラメーターとして使用する場合には制限があります。
次のコード スニペットを考えてみましょう。
myYear = record.GetValueOrNull<int?>("myYear");
このコードは、GetValueOrNull によって返された Null 許容値をnull 許容の int 変数 (myyear)。ただし、コンパイラは「型 'int?'」というエラーをスローします。ジェネリック型またはメソッドのパラメーター 'T' として使用するには、参照型である必要があります。
ここでの問題は、GetValueOrNull が null 許容値ではなく参照型 (オブジェクト) を返すように定義されていることです。タイプ。これを解決するには、戻り値の型を Nullable
static void Main(string[] args) { int? i = GetValueOrNull<int>(null, string.Empty); } public static Nullable<T> GetValueOrNull<T>(DbDataRecord reader, string columnName) where T : struct { object columnValue = reader[columnName]; if (!(columnValue is DBNull)) return (T)columnValue; return null; }
戻り値の型を Nullable
以上がC# で Null 許容値型をジェネリック型パラメーターとして直接使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。