Heim >Backend-Entwicklung >C++ >Wie behebe ich Compilerfehler bei der Verwendung der bedingten Zuweisung mit Nullable-Typen 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>
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>
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!