Wie override default(int?) erhalten Sie NULL statt 0
Fand ich hier die Methode:
public static T GetValue<T>(object value)
{
if (value == null || value == DBNull.Value)
return default(T);
else
return (T)value;
}
Wie zu umschreiben, es zu erhalten, "null", wenn "Wert" NULL ist?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht neu zu schreiben. Sie brauchen nur zu nennen, wie:
Können Sie nicht –
int
nichtnull
. Sie können jedoch, verwenden SieNullable<int>
statt. Dies funktioniert aber nur für value-Typen. Zum Beispiel, es nicht mehr fürT == string
. Um dies zu erreichen, müssen Sie schreiben zwei verschiedene Funktionen, eine für nullable value types und eine für Referenztypen.Oder terser:
(In allen Fällen
T?
ist eine Abkürzung fürNullable<T>
.)Nullable<string>
. Es wird genug, um die original-Methode mitint?
alsT
.int
ist ein Wert Typ nicht einen Verweis geben - es kann ein Wert vonnull
.Erwägen Sie die Verwendung
int?
statt, wenn Ihr INT-Spalte in der Datenbank null-Werte zulässt.In C#, ein int ein Werttyp ist und kann deshalb nicht null sein, da Jakub sagte. Allerdings können Sie eine variable definieren :
Diese kann auf null gesetzt werden.
Meinst du diese: