Eine verbesserte Methode zur zuverlässigen Bestimmung, ob ein C#-Typ nullfähig ist
Um festzustellen, ob ein Objekt explizit als nullable-Typ deklariert ist, müssen Sie den zugrunde liegenden Typ kennen und prüfen, ob es sich um einen nullable-Werttyp handelt. Obwohl dies durch Wertkonvertierung und -reflexion erreicht werden kann, ist dieser Ansatz nicht umfassend, da er Nullable-Referenztypen ausschließt.
Eine robustere Lösung besteht darin, Generika und Typinferenz zu verwenden, um die Nullfähigkeit eines bestimmten Typs wie folgt zu bestimmen:
<code class="language-csharp">static bool IsNullable<T>(T obj) { if (obj == null) return true; // 明显可空 Type type = typeof(T); if (!type.IsValueType) return true; // 引用类型 if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T> return false; // 值类型 }</code>
Diese Methode verwendet die Methode Nullable.GetUnderlyingType
, um zu bestimmen, ob der bereitgestellte Typ vom Typ Nullable<T>
ist. Durch die Bestimmung des zugrunde liegenden Typs kann genau zwischen nullbaren und nicht nullbaren Werttypen unterschieden werden.
Während diese Methode bei der Arbeit mit generischen Typen sehr effizient ist, kann sie bei der Arbeit mit geschachtelten Werttypen weniger effizient sein. Wenn der Wert in ein Objekt eingepackt wurde, ist der zugrunde liegende Typ schwieriger zu identifizieren.
Weitere Informationen zum Identifizieren nullfähiger Typen finden Sie unter:
Das obige ist der detaillierte Inhalt vonWie kann ich zuverlässig feststellen, ob ein Typ in C# nullbar ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!