これは、Genericsを使用してDBのnull値の読み取りを処理する安全で効率的な方法ですか?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

質問

ジェネリックで遊んでいて、DBからのNULL値の読み取りを処理するために作成した関数に関するフィードバックや提案が得られることを望んでいました。私の主な関心事はifステートメントです。 Tが文字列ectであるかどうかを調べるより良い方法はありますか?ありがとう。

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }
役に立ちましたか?

解決

T のタイプに関係なく、 default(T)にフォールバックして、指定されたタイプのデフォルト値( string.Empty 0 false null など):

value = default(T);

編集: default(string)は、ただし、 null を返します。

他のヒント

他のプリミティブデータ型もカバーする必要があります。

value = default(T);

これが参照型の場合はnullを返し、そうでない場合は0、false、または指定された型Tの適切なデフォルト値を返します。

注: default(string)は null であり、string.Emptyではありません。 String.Empty にする場合は、これを例外として実装する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top