Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob ein Werttyp in C# nullfähig ist?

Wie kann ich feststellen, ob ein Werttyp in C# nullfähig ist?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-13 11:58:42450Durchsuche

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

Prüfen Sie, ob Nullwerttypen zulässig sind

Die Bestimmung der Nullfähigkeit eines Objekts ist ein häufiges Problem beim Umgang mit Werttypen. Bei der Suche nach nullfähigen Werttypen müssen Sie zwischen nullbaren Werttypen und nullbaren Referenztypen unterscheiden. In diesem Fall müssen wir Werttypen identifizieren, die implizit Nullwerte enthalten können. So erreichen Sie dies:

<code class="language-csharp">bool IsNullableValueType(object o)
{
    if (o == null) return true; // 显而易见的情况
    Type type = o.GetType(); // 修正:使用 o.GetType() 获取对象的实际类型
    if (!type.IsValueType) return true; // 引用类型
    if (Nullable.GetUnderlyingType(type) != null) return true; // Nullable<T>
    return false; // 值类型
}</code>

Diese Methode wertet den Objekttyp aus:

  • Wenn ein Objekt null ist, gilt es als nullbar.
  • Ein Objekt ist auch nullbar, wenn es ein Referenztyp (und kein Werttyp) ist.
  • Ein Objekt ist nullbar, wenn sein zugrunde liegender Typ nullbar ist (bestimmt durch Nullable.GetUnderlyingType).
  • Andernfalls handelt es sich um einen Werttyp, der keine Nullwerte zulässt.

In Ihrem Beispiel bezieht sich bc.myBool auf einen nicht nullbaren bool-Wert und obj wird keine Instanz von Nullable<bool> sein. Um mit dieser Situation umzugehen, erstellen Sie nur dann einen NULL-fähigen Wrapper um IsNullableValueType(bc.myBool), wenn true zu obj ausgewertet wird.

Anweisungen zur Codeverbesserung: Es liegt ein Fehler in Type type = typeof(T); im Originalcode vor, da T nicht definiert ist. Dies wurde zu Type type = o.GetType(); korrigiert, wobei der Laufzeittyp des Objekts zur Beurteilung verwendet wird.

Das obige ist der detaillierte Inhalt vonWie kann ich feststellen, ob ein Werttyp in C# nullfähig ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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