Plus, Minus, Mal, Geteilt bei Runtime

  • C#

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Plus, Minus, Mal, Geteilt bei Runtime

    Neu

    Howdy zusammen,

    mich würde interessieren was ihr zu meinen Vorhaben sagt, ist das wirklich der effizienteste weg? Gibt es da nicht eine kürzere Möglichkeit? Sehe ich denn Wald lauter Bäume nicht mehr?

    C#-Quellcode

    1. int _zahl1 = 154;
    2. int _zahl2 = 306;
    3. string _mode = "+"; // +, -, /, *
    4. int _ergebnis;
    5. public void doCalc()
    6. {
    7. add(_zahl1, _zahl2, _mode);
    8. }
    9. void add(int Zahl1, int Zahl2, string mode)
    10. {
    11. switch (mode)
    12. {
    13. case "+":
    14. _ergebnis = Zahl1 + Zahl2;
    15. break;
    16. case "-":
    17. _ergebnis = Zahl1 - Zahl2;
    18. break;
    19. case "/":
    20. _ergebnis = Zahl1 / Zahl2;
    21. break;
    22. case "*":
    23. _ergebnis = Zahl1 * Zahl2;
    24. break;
    25. default:
    26. Debug.Log("error -> add <- function");
    27. return;
    28. }
    29. }


    ich freue mich auf eure Antworten :)

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Neu

    Sowas geht auch ... zumindest für "Standard" Berechnungen.

    C#-Quellcode

    1. var dt = new DataTable();
    2. var o = dt.Compute("1 + 1","");
    3. Console.WriteLine(o.ToString());
    4. Console.ReadKey();
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Neu

    Jo, kürzer geht schon, wie mrMo zeigte. Aber schöner wäre doch etwas in der art:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Operations As New Dictionary(Of String, Func(Of Double, Double, Double))
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Operations.Add("+", AddressOf Plus)
    5. Operations.Add("-", AddressOf Minus)
    6. Operations.Add("*", AddressOf Multiply)
    7. Operations.Add("/", AddressOf Devide)
    8. Debug.WriteLine(Calculate("+", 4, 2))
    9. Debug.WriteLine(Calculate("-", 4, 2))
    10. Debug.WriteLine(Calculate("*", 4, 2))
    11. Debug.WriteLine(Calculate("/", 4, 2))
    12. End Sub
    13. Private Function Calculate(op As String, a As Double, b As Double) As Double
    14. If Not Operations.ContainsKey(op) Then
    15. Throw New Exception("Unkown Operation")
    16. End If
    17. Return Operations(op)(a, b)
    18. End Function
    19. Private Function Plus(a As Double, b As Double) As Double
    20. Return a + b
    21. End Function
    22. Private Function Minus(a As Double, b As Double) As Double
    23. Return a - b
    24. End Function
    25. Private Function Multiply(a As Double, b As Double) As Double
    26. Return a * b
    27. End Function
    28. Private Function Devide(a As Double, b As Double) As Double
    29. Return a / b
    30. End Function
    31. End Class
    Die Natur ist bekanntermaßen knallhart, sie sortiert aus was sich nicht bewährt hat.(Harald Lesch, 2021)

    Demnach müssten wir bald dran sein...

    Neu

    @RajYuJin UNd dann mach aus Deinen Operationen noch ein Enum.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!