Heim >Backend-Entwicklung >C++ >Warum ist `? 10: null` verboten in C# ternären Operatoren mit nullbaren Typen?

Warum ist `? 10: null` verboten in C# ternären Operatoren mit nullbaren Typen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-28 21:51:10207Durchsuche

Why is `? 10 : null` Forbidden in C# Ternary Operators with Nullable Types?

C#Ternäres Computer und leerer Typ: Warum

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.

Betrachten Sie das folgende Codefragment:

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!

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