Heim > Backend-Entwicklung > C++ > Wie gehe ich mit Nullable-Zuweisungen mit bedingten Operatoren in C# um?

Wie gehe ich mit Nullable-Zuweisungen mit bedingten Operatoren in C# um?

Patricia Arquette
Freigeben: 2025-01-16 16:35:19
Original
193 Leute haben es durchsucht

How to Handle Nullable Assignments with Conditional Operators in C#?

Verwenden Sie bedingte Operatoren, um Nullable-Zuweisungen in C# zu verarbeiten

Nullable-Typ, dargestellt als Nullable<T>, wird verwendet, um einen Wert darzustellen, der möglicherweise einen gültigen Wert hat oder nicht. Bei einigen Entwicklern kann es bei der Zuweisung von Nullable-Werten zu Problemen mit Bedingungsoperatoren kommen.

Probleme mit nullbaren Typen und bedingten Operatoren

Der Bedingungsoperator

, normalerweise mit ?: bezeichnet, wertet eine Bedingung aus und weist basierend auf ihrem Wahrheitswert einen anderen Wert zu. Wenn jedoch einer der zugewiesenen Werte ein nullbarer Typ ist und der andere nicht, generiert der Compiler aufgrund der Typinkompatibilität einen Fehler.

Betrachten Sie das folgende Beispiel:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>
Nach dem Login kopieren

Hier ist EmployeeNumber Nullable<int> und employeeNumberTextBox.Text eine Zeichenfolge. Das Zuweisen von null zu einem nullbaren Typ ist gültig, das Konvertieren einer Zeichenfolge in int jedoch nicht. Der Compiler kann den Typ des Ausdrucks nicht korrekt ableiten.

Der Null-Koaleszenzoperator ist keine praktikable Lösung

Der

Null-Koaleszenzoperator (??) kann hier nicht verwendet werden, da eine Konvertierung von employeeNumberTextBox.Text in null erforderlich ist, wenn employeeNumberTextBox.Text nicht int ist.

In nullbaren Typ konvertieren

Um dieses Problem zu lösen, muss jeder im Bedingungsoperator zugewiesene Wert explizit in einen nullbaren Typ konvertiert werden. Dadurch kann der Compiler Ausdruckstypen korrekt auflösen:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? (int?)null
    : Convert.ToInt32(employeeNumberTextBox.Text);</code>
Nach dem Login kopieren

oder:

<code class="language-csharp">EmployeeNumber =
    string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>
Nach dem Login kopieren

Dies ermöglicht elegante und prägnante Zuweisungen bei der Verwendung von nullbaren Typen und bedingten Operatoren.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Nullable-Zuweisungen mit bedingten Operatoren in C# um?. 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