Ich habe einen Datenleser. Ich möchte den Wert darin mit dem Wert 42 vergleichen. Ich weiß, dass es ein ganzzahliger Typ ist (z. B. was MySQL INT
, TINYINT
, SMALLINT
, , BIGINT
, JUMBODELUXEINT
usw. nennt). Ich möchte den tatsächlichen Typ nicht in den C# -Code verdrahten. Das Beste, was ich gekommen sind mit istDieses Objekt ist ein integraler Typ. Kann ich den Wert in weniger als fünf Zeilen Code abrufen?
object x = reader.GetValue(i);
uint k = x is byte ? (byte) x
: x is short ? (uint) (short) x
: x is ushort ? (ushort) x
: x is int ? (int) (int) x
: (uint) x;
if (k == 42) { ... }
Das scheint unglaublich langatmig. Ich habe versucht, Equals
verwenden, aber verschiedene Typen mit dem gleichen Wert scheinen nicht als gleich zu testen.
Gibt es einen besseren Weg?
integral oder interger-al? – StingyJack
Verwenden Sie 'uint k = x ist nicht? (uint) x: (uint) Convert.ToInt32 (x)); '. Siehe http://stackoverflow.com/questions/10022383/, die Jon Skeets Antwort auf eine Erklärung erweitert. –