Heim > Backend-Entwicklung > C++ > Wie kann ich zuverlässig feststellen, ob ein Typ in C# nullbar ist?

Wie kann ich zuverlässig feststellen, ob ein Typ in C# nullbar ist?

Patricia Arquette
Freigeben: 2025-01-13 11:47:42
Original
921 Leute haben es durchsucht

How Can I Reliably Determine if a Type is Nullable in C#?

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage