Kann nicht implizit konvertiert Typ "long" zu "int?"?

Es eine sehr einfache Frage - konvertiert einen Typ long-variable auf eine null-Datentyp int (int?). (siehe Beispiel weiter unten - nicht der eigentliche code)

int? y = 100;

long x = long.MaxValue;

y = x;

Bin ich immer der compile-Zeit-Fehler.

"Kann nicht implizit konvertiert Typ 'long' in 'int?'. Eine explizite Konvertierung vorhanden ist (fehlt ein cast?).

Ich habe das Update ( siehe unten die Lösung Abschnitt), Meine Neugier bei der Buchung die Frage ist der 3 Lösungen, welche ist zu empfehlen?

Lösung

  y = Convert.ToInt32(x);
  y = (int)x;
  y = unchecked((int) x);  

Vielen Dank im Voraus für Eure Vorschläge

  • Wissen Sie, warum sich der compiler beschwert sich über das? Es wird versucht, Ihnen zu helfen.
  • David - ich bin völlig der Kenntnis von Verlust an Präzision ( verliert Wert), meine Frage war von den 3 was empfohlen wird( die oben ist nur ein Beispiel)
  • Welches ist empfehlenswert, hängt von Ihren Anforderungen ab.
Schreibe einen Kommentar