Heim >Backend-Entwicklung >C++ >Wie kann ich feststellen, ob ein Werttyp in C# nullfähig ist?
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:
Nullable.GetUnderlyingType
). 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!