Ist dies eine sichere und effiziente Art und Weise das Lesen der Nullwerte in einem DB mit Generics zu behandeln?
Frage
Ich habe mit Generika zu spielen und habe gehofft, dass ich ein Feedback oder Vorschläge zu einer Funktion erhalten könnte ich NULL-Werte aus der DB Lese helfen erstellt zu behandeln. Mein Hauptanliegen ist es in der if-Anweisung. Gibt es einen besseren Weg, um herauszufinden, ob T einen String ect ist.? Danke.
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;
}
Lösung
Unabhängig von T
der Typ, können Sie zurück zu default(T)
fallen, die den Standardwert für den gegebenen Typ liefern wird ( , string.Empty
0
, false
, null
, etc ...):
value = default(T);
Edit: default(string)
hat jedoch zurückkehren null
Andere Tipps
Sie müssen auch andere primitive Datentypen abzudecken.
value = default(T);
Diese Rückkehr null, wenn es dich um einen Referenztyp ist, sonst 0, falsch oder was auch immer ist ein geeigneter Standardwert der angegebenen Typ T.
Hinweis: default (string) ist null
, nicht string.Empty. Wenn Sie es sein String.Empty
möchten, müssen Sie dies als Ausnahme implementieren.