Ich bin ein Rechner wie Projekt erstellen, die Operationen +, -, *, /, %, ^
auf Variablen erfordert. Standardoperationen sind vom Typ var1 OP var2
. Ich habe den Typ der beiden Variablen zur Laufzeit, die entweder Int64
oder double
sein können.Converting (int zu double) und Betrieb auf Variablen zur Laufzeit
Ich kann beide konvertieren, um zu verdoppeln und Berechnungen durchzuführen, aber ich würde lieber integer-based Berechnungen machen, wenn beide Variablen Integer sind (andernfalls beide in Doppel konvertieren). Dies ist, was ich bisher bekam (für Zusatz)
if (container1.vType == Interop.variableType.DOUBLE || container2.vType == Interop.variableType.DOUBLE)
return Convert.ToDouble(container1.value) + Convert.ToDouble(container2.value);
return (Int64)container1.value + (Int64)container2.value;
jedoch aufgrund mehrerer Operationen gleichen/ähnlichen Code über Verwendung und über unnötige Redundanz schaffen wird (Ich werde einfach haben den Bediener ändern).
Also wie soll ich das tun, damit es sowohl hohe Leistung als auch minimale/keine Redundanz hat?
Was ist der Kompilierzeittyp von container1.values und container2.values? – Vikhram
sie sind Objekte – Crimson7
welche unnötige Redundanz haben Sie? Was erwarten Sie auch in container1.value und container2.value? Sind sie Schnur? int64? doppelt? Convert.ToDouble wird verwendet, um die Zeichenfolge in Double umzuwandeln. Während (Int64) nur Casting ist. Wenn Ihr Wert eine Zeichenfolge ist, müssen Sie möglicherweise Konvertieren verwenden. Wenn der Wert jedoch entweder int oder double ist, können Sie ihn einfach umsetzen. – kurakura88