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
Freigeben: 2025-01-28 21:51:10
Original
168 Leute haben es durchsucht

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>
Nach dem Login kopieren
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>
Nach dem Login kopieren
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>
Nach dem Login kopieren
oder wir können das Standard -Schlüsselwort verwenden:

<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?</code>
Nach dem Login kopieren
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!

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