Heim > Backend-Entwicklung > C++ > Warum versagt der ternäre Operator mit nullbaren Typen in C#?

Warum versagt der ternäre Operator mit nullbaren Typen in C#?

Patricia Arquette
Freigeben: 2025-01-28 21:56:09
Original
899 Leute haben es durchsucht

Why Does the Ternary Operator Fail with Nullable Types in C#?

Die ternären Computersymbole und leeren Typen in der C#: Limit -Details

Bei der Verarbeitung des leeren Werttyps das ternäre Computersymbol (? :) kann unerwartete Verhaltensweisen haben. Ein häufiges Problem ist es, das ternäre Computing -Symbol zu verwenden, um der Variablen der Kanal -Ganzzahl einen ganzzahligen Charakter oder Null -Null zuzuweisen.

Betrachten Sie beispielsweise den folgenden Code:

In diesem Code versucht das ternäre Computersymbol, den richtigen Ausdruck zu berechnen:
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null;</code>
Nach dem Login kopieren

unter ihnen, zu einem booleschen Wert zurückkehren, 10 ist ein ganzzahliges wörtliches, null ist eine leere Referenz. Der Compiler versucht, diese Werte in den Typ des linken Ausdrucks zu konvertieren, dh
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
Nach dem Login kopieren
.

GetBoolValue() Es gibt jedoch keine versteckte Umwandlung zwischen dem wörtlichen Volumen (nicht leer) und der leeren Ganzzahl (int?). In ähnlicher Weise gibt es keine versteckte Umwandlung zwischen Null und Ganzzahl. Dies verursacht den Compiler -Fehler:

int? Um dieses Problem zu lösen, muss der richtige Ausdruck geändert werden, um sicherzustellen, dass die beiden Zweige des drei -Yuan -Operators die mit dem linken Ausdruck kompatibelen Werte zurückgeben. Dies kann durch implizite Konvertierung oder explizite Konvertierung erreicht werden:

<code>无法确定条件表达式的类型,因为整型和<null>之间没有隐式转换。</code>
Nach dem Login kopieren

Durch diese Modifikationen kann der Compiler den richtigen Ausdruck erfolgreich berechnen und den Typ des bedingten Ausdrucks bestimmen, um Fehler zu beseitigen.

Das obige ist der detaillierte Inhalt vonWarum versagt der ternäre Operator mit nullbaren Typen in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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