ホームページ >バックエンド開発 >C++ >データベース レコードを取得するときに、Null 許容型をジェネリック パラメーターとして処理するにはどうすればよいですか?

データベース レコードを取得するときに、Null 許容型をジェネリック パラメーターとして処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 19:49:41832ブラウズ

How Can I Handle Nullable Types as Generic Parameters When Retrieving Database Records?

ジェネリック パラメーターの Null 許容型の制限の解決

GetValueOrNull(この DbDataRecord リーダー、文字列 columnName)、Nullable に関連する制限が発生する可能性があります構造体.

最初は、null を返すことを許可するクラス制約が使用されていました。ただし、int? などの null 許容型は構造体であり、クラス制約で必要な参照型として禁止されています。

これを修正するには、制約を null 非許容の戻り値が許可される構造体に変更します。ただし、Null 許容型を割り当てようとすると、Null 非許容値型が必要であることを示すエラーが発生しました。

これらの制限を克服するには、次の戦略を検討してください。

  • 戻り値を変更するNullable にタイプします。
  • 以下のコードに示すように、メソッド呼び出しで null 非許容の基本型を指定します。
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;
}

このアプローチを採用すると、 GetValueOrNull メソッドを使用して null 許容型を処理し、データベース値のシームレスな取得を保証します。

以上がデータベース レコードを取得するときに、Null 許容型をジェネリック パラメーターとして処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。