Identifizieren von Nullable-Werttypen in C#
In diesem Artikel werden Methoden zur genauen Bestimmung untersucht, ob ein bestimmtes Objekt in C# einen Nullable-Werttyp darstellt. Wir prüfen einen unkomplizierten Ansatz und dann eine robustere, allgemeinere Lösung zur Bewältigung potenzieller Fallstricke.
Ein grundlegender Ansatz (IsNullableValueType
)
Die folgende Funktion IsNullableValueType
bietet eine grundlegende Prüfung:
<code class="language-csharp">bool IsNullableValueType(object o) { if (o == null) return true; // Null is considered nullable Type type = o.GetType(); if (!type.IsValueType) return true; // Reference types are treated as nullable if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // Value type }</code>
Einschränkungen des Basisansatzes
Diese Methode weist jedoch Einschränkungen auf, insbesondere beim Umgang mit eingerahmten Werten:
Ein robusterer generischer Ansatz (IsNullable
)
Um diese Einschränkungen zu beseitigen, bietet eine generische Methode eine genauere Lösung:
<code class="language-csharp">static bool IsNullable<T>(T obj) { if (obj == null) return true; // Null is nullable Type type = typeof(T); if (!type.IsValueType) return true; // Reference types are nullable if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // Value type }</code>
Diese generische Methode (IsNullable
) leitet den Typ T
aus dem Eingabeparameter ab und bietet so eine genauere und typsicherere Möglichkeit zur Bestimmung der NULL-Zulässigkeit, insbesondere bei der Verarbeitung von geschachtelten Werten.
Weiterführende Literatur
Ausführliche Informationen zu nullbaren Typen in C# finden Sie in der offiziellen Microsoft-Dokumentation: //m.sbmmt.com/link/55298ec38b13c613ce8ffe0f1d928ed2
Das obige ist der detaillierte Inhalt vonWie kann ich genau bestimmen, ob ein Objekt einen Nullable-Werttyp in C# darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!