Heim >Backend-Entwicklung >C++ >Warum ist `? 10: null` verboten in C# ternären Operatoren mit nullbaren Typen?
einen Fehler melden?
? 10 : null
Bei der Verwendung des verfügbaren Typs in C#ist die Typ -Konsistenz im Ausdruck sehr wichtig. Das ternäre Computercharakter (? :) Bewerten Sie die beiden Ausdrücke auf der Grundlage der Bedingung.
Hier versuchen wir, der Kabel -INT -Variable X Int und Null zuzuweisen. Dies kann zu Fehlern von Compilern führen, da zwischen diesen beiden Typen keine versteckte Umwandlung vorliegt.
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; // 错误</code>Der Compiler versucht zuerst, den richtigen Ausdruck zu bewerten:
Der wörtliche 10 ist ein int -Typ und Null ist ein leerer Typ. Es gibt keine versteckte Umwandlung zwischen den beiden, daher treten Fehler auf.
<code class="language-csharp">GetBoolValue() ? 10 : null</code>Um dieses Problem zu lösen, können wir eine explizite Konvertierung durchführen, um die Typkonsistenz zu gewährleisten:
oder wir können die leere Wortoberfläche in int ?:
konvertieren
<code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null; // 将10转换为int?</code>oder wir können das Standard -Schlüsselwort verwenden:
<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?</code>Wenn wir die Konsistenz des Typs sicherstellen, können wir den Compiler -Fehler vermeiden und die Vollständigkeit des Typs beibehalten.
Das obige ist der detaillierte Inhalt vonWarum ist `? 10: null` verboten in C# ternären Operatoren mit nullbaren Typen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!