Heim > Backend-Entwicklung > C++ > Wie behebe ich Compilerfehler bei der Verwendung der bedingten Zuweisung mit Nullable-Typen in C#?

Wie behebe ich Compilerfehler bei der Verwendung der bedingten Zuweisung mit Nullable-Typen in C#?

Linda Hamilton
Freigeben: 2025-01-16 16:32:09
Original
754 Leute haben es durchsucht

How to Resolve Compiler Errors When Using Conditional Assignment with Nullable Types in C#?

Compilerfehler bei der Verwendung nullfähiger Typen für die bedingte Zuweisung in C#

In C# führt die Zuweisung mit dem Bedingungsoperator (?) manchmal zu einem Compilerfehler, wenn mit Nullable-Typen (z. B. Nullable<int>) gearbeitet wird. Ein häufiges Beispiel ist der Versuch, das Ergebnis eines bedingten Ausdrucks einer Nullable-Variablen zuzuweisen, wie im folgenden Code gezeigt:

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

Dieser Code weist null zu, wenn employeeNumberTextBox.Text leer ist, und weist einen int-Wert zu, wenn er nicht leer ist. Der Compiler beschwert sich jedoch: „Eine implizite Konvertierung zwischen ‚null‘ und ‚int‘ kann nicht durchgeführt werden.“

Ursachenanalyse

Das Problem besteht darin, dass bedingte Operatoren nur die Art der wahren und falschen Werte berücksichtigen, nicht den Kontext, in dem der Ausdruck verwendet wird. In diesem Fall kann der Compiler den Typ des resultierenden Ausdrucks nicht bestimmen, da er null und int enthält, bei denen es sich um inkompatible Typen handelt.

Lösung

Um dieses Problem zu lösen, können Sie einen der Werte manuell in einen nullbaren Typ umwandeln:

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

Durch die explizite Umwandlung von Null in (int?)null stellen Sie dem Compiler die erforderlichen Typinformationen zur Verfügung, um den Ausdruck zu analysieren und die Zuweisung vorzunehmen. Alternativ können Sie den int-Wert bei Bedarf in (int?) umwandeln.

Mit dieser Lösung können Sie nullfähige Typen und bedingte Operatoren auf elegantere Weise verwenden, insbesondere beim Initialisieren von Eigenschaften in Objektinitialisierern.

Das obige ist der detaillierte Inhalt vonWie behebe ich Compilerfehler bei der Verwendung der bedingten Zuweisung mit Nullable-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