Heim >Backend-Entwicklung >C++ >Wie werden implizite Typkonvertierungsfehler bei der Zuweisung zu Nullable-Typen mit dem Bedingungsoperator behoben?
Wie behebt man implizite Typkonvertierungsfehler bei der Verwendung von Bedingungsoperatoren zur Zuweisung zu nullbaren Werttypen?
Beim Umgang mit Nullable-Werttypen kommt es häufig vor, dass Sie zum Zuweisen von Werten den Bedingungsoperator (? :) verwenden müssen. Der Compiler kann jedoch Fehler bei impliziten Typkonvertierungen auslösen.
Betrachten Sie beispielsweise den folgenden Code:
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
Hier ist EmployeeNumber
ein Nullable<int>
-Attribut, das durch eine Datenbankspalte unterstützt wird, die Nullwerte zulässt. Obwohl in diesem Zusammenhang sowohl Null- als auch Ganzzahlwerte gültig sind, meldet der Compiler dennoch einen Fehler:
Eine implizite Konvertierung zwischen „null“ und „int“ kann nicht durchgeführt werden
Das Problem ergibt sich aus der Tatsache, dass bedingte Operatoren nur Wahr/Falsch-Werte berücksichtigen, nicht die Verwendung des resultierenden Ausdrucks. Da Null und Ganzzahlen keinen gemeinsamen Typ haben, kann der Compiler den geeigneten Zuweisungstyp nicht ermitteln.
Lösung: explizite Konvertierung
Um dieses Problem zu lösen, muss einer der Werte explizit in Nullable<int>
umgewandelt werden, damit der Compiler auf den richtigen Typ schließen kann:
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? (int?)null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
oder
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>
Mit einer expliziten Konvertierung zwingen Sie den Compiler zu erkennen, dass das Ergebnis eine Ganzzahl sein sollte, die NULL-Werte zulässt, sodass die Zuweisung erfolgreich sein kann.
Hinweis: Aufgrund der Notwendigkeit, die Zeichenfolge inline in eine Ganzzahl zu konvertieren, die NULL-Werte zulässt, stellt der Null-Koaleszenzoperator (??) in diesem Szenario keine geeignete Alternative dar.
Das obige ist der detaillierte Inhalt vonWie werden implizite Typkonvertierungsfehler bei der Zuweisung zu Nullable-Typen mit dem Bedingungsoperator behoben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!