Heim > Backend-Entwicklung > C++ > Warum versagt mein C# ternärer Operator mit nullbaren Typen: `getBoolValue ()? 10: null`?

Warum versagt mein C# ternärer Operator mit nullbaren Typen: `getBoolValue ()? 10: null`?

Barbara Streisand
Freigeben: 2025-01-28 22:14:11
Original
603 Leute haben es durchsucht

Why Does My C# Ternary Operator Fail with Nullable Types: `GetBoolValue() ? 10 : null`?

c# Nullierbare Typen und der ternäre Operator: Auflösungstyp Inkonsistenzen

In C#kann die Verwendung des ternären Operators (? :) mit nullbaren Typen (wie int?) zum Fehler führen. "Die bedingte Expression kann nicht bestimmt werden ...". Dies geschieht, wenn die wahren und falschen Zweige des ternären Operators inkompatible Typen haben. Beispielsweise schlägt GetBoolValue() ? 10 : null fehl, weil 10 ein int ist und null das Fehlen eines Wertes darstellt. Der Compiler kann sich nicht über einen einzelnen Typ für den Ausdruck entscheiden.

Das Problem beruht auf dem Bedarf des ternären Bedarfs nach einem konsistenten Rückgabetyp. Während null einer nullbaren Ganzzahl (int?) zugeordnet werden kann, kann eine einfache int nicht implizit ein int?.

werden

Hier sind verschiedene Möglichkeiten, dies zu korrigieren:

  1. Explizit auf nullable Ganzzahl gegossen: Die Ganzzahl buchstäblich zu int?:

    gegossen
    x = GetBoolValue() ? (int?)10 : null;
    Nach dem Login kopieren
  2. explizite NULL -Konvertierung: explizit null zu int?:

    gegossen
    x = GetBoolValue() ? 10 : (int?)null;
    Nach dem Login kopieren
  3. Verwenden des Schlüsselworts default: Das Schlüsselwort default bietet eine Art vom Typ Typ, um den Standardwert für einen Typ zu erhalten, der null für Nullable-Typen:

    ist
    x = GetBoolValue() ? 10 : default(int?);
    Nach dem Login kopieren

Diese Lösungen gewährleisten die Typ -Konsistenz, sodass der Compiler den Typ des ternären Ausdrucks als int? korrekt schließt und so den Kompilierungsfehler auflöst. Wählen Sie die Methode aus, die Ihren Codierungsstil- und Lesbarkeitseinstellungen am besten entspricht.

Das obige ist der detaillierte Inhalt vonWarum versagt mein C# ternärer Operator mit nullbaren Typen: `getBoolValue ()? 10: null`?. 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