Bedingte Operatorzuweisung mit Nullable & lt; value & gt; Arten?

EmployeeNumber =
string.IsNullOrEmpty(employeeNumberTextBox.Text)
    ? null
    : Convert.ToInt32(employeeNumberTextBox.Text),

Oft finde ich mich wollen, zu tun, Dinge wie diese (EmployeeNumber ist ein Nullable<int> wie es ist eine Eigenschaft, die auf eine LINQ-to-SQL-dbml-Objekt, wo die Spalte NULL-Werte zulässt). Leider ist der compiler glaubt, dass "Es gibt keine implizite Konvertierung zwischen 'null' und 'int',", obwohl beide Arten gelten in einem Zuweisungsoperator, um eine null-int auf Ihre eigenen.

Null coalescing-operator ist nicht eine option, so weit wie ich kann sehen, weil der inline-Konvertierung, dass muss geschehen .Text Zeichenkette, falls es nicht null ist.

Soweit ich weiß der einzige Weg, dies zu tun ist die Verwendung einer if-Anweisung und/oder Zuordnung in zwei Schritten. In diesem speziellen Fall finde ich das sehr frustrierend, weil ich wollte, um das Objekt-Initialisierer-syntax, und diese Zuordnung wäre in der Initialisierungs-block...

Weiss jemand eine elegantere Lösung?

Kommentar zu dem Problem - Öffnen
Schauen Sie Eric lipperts dazugehörigen blog-Eintrag: Typ-Inferenz leiden, part one Kommentarautor: CodesInChaos
Compiler-Fehler CS0173 hat mich hierher gebracht. Kommentarautor: DavidRR

InformationsquelleAutor der Frage Grank | 2008-09-16

Schreibe einen Kommentar