palaber
Captain
- Registriert
- Juni 2006
- Beiträge
- 3.856
Hallo zusammen,
mir ist gerade etwas seltsames aufgefallen und frage mich warum das so ist.
Das Netz hat mir leider bisher noch nicht weiter geholfen.
Und zwar bekomme ich in eine Methode einen Parameter vom Typ decimal. Dieser kann entweder eine Ganzzahl sein,
oder aber eine Dezimalzahl.
Den Parameter möchte ich bei einer Ganzzahl in einen Integer wandeln und dann als Object weiter geben.
Bei einer Dezimalzahl soll die Wandlung in einen Double Wert erfolgen und anschließen in einem Object verpackt werden.
Problem: Wenn ich mit dem "?:"-Operator arbeite bekomme ich im object IMMER eine Dezimalzahl.
Vereinfachte Darstellung:
mir ist gerade etwas seltsames aufgefallen und frage mich warum das so ist.
Das Netz hat mir leider bisher noch nicht weiter geholfen.
Und zwar bekomme ich in eine Methode einen Parameter vom Typ decimal. Dieser kann entweder eine Ganzzahl sein,
oder aber eine Dezimalzahl.
Den Parameter möchte ich bei einer Ganzzahl in einen Integer wandeln und dann als Object weiter geben.
Bei einer Dezimalzahl soll die Wandlung in einen Double Wert erfolgen und anschließen in einem Object verpackt werden.
Problem: Wenn ich mit dem "?:"-Operator arbeite bekomme ich im object IMMER eine Dezimalzahl.
Vereinfachte Darstellung:
Code:
static void Main(string[] args)
{
decimal dDec = 2.0M;
decimal dInt = 2;
bool useInt = true;
object x = useInt ? Convert.ToInt32(dInt) : Convert.ToDouble(dDec);
Send(x); // Hier wird '2.0' verschickt => FALSCH
object y = Convert.ToDouble(dDec);
if(useInt)
{
y = Convert.ToInt32(dInt);
}
Send(y); // Hier wird '2' verschickt => RICHTIG
}
private static void Send(object obj)
{
// ...
}