これは、Genericsを使用してDBのnull値の読み取りを処理する安全で効率的な方法ですか?
質問
ジェネリックで遊んでいて、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
にする場合は、これを例外として実装する必要があります。
所属していません StackOverflow