Methoden Returnwerte vergleichen?
-
Hi,
ich versuche mich im Umgang mit C# und möchte gern die Ergebnisse zweier Methoden vergleichen. Leider gelingt mir das nicht.
Beide Methoden sind public haben getter, setter und sind vom Typ Integer, der return Wert ist ebenfalls entsprechend gestaltet. Außerdem sind die Methoden in der selben Klasse und sollen auch da verglichen werden.Mein Gedanke war jetzt, da ja eh ein Integer zurückkommt müsste es doch möglich sein die beiden Methoden direkt in den Bedingungskopf einer If-Anweisung zu packen um einen Vergleich der Rückgabewerte zu machen.
Wo ist mein Gedanklicher Fehler und wie wúrde man sowas richtig machen?
Grüsse
-
00Albert schrieb:
Wo ist mein Gedanklicher Fehler...
Das du uns deinen Code nicht gezeigt hast
-
00Albert schrieb:
Beide Methoden sind public haben getter, setter [...]
Wo ist mein Gedanklicher Fehler und wie wúrde man sowas richtig machen?
Eine Methode hat keine Getter/Setter. Wenn überhaupt kann eine Methode ein Getter oder Setter sein. Also was meinst Du damit?
-
loks schrieb:
00Albert schrieb:
Beide Methoden sind public haben getter, setter [...]
Wo ist mein Gedanklicher Fehler und wie wúrde man sowas richtig machen?
Eine Methode hat keine Getter/Setter. Wenn überhaupt kann eine Methode ein Getter oder Setter sein. Also was meinst Du damit?
Ich glaube er hat hier nur die falsche Terminologie benutzt, das einfachste fuer uns ist wenn wir seinen Code mal einsehen koennen. Ich hab schon eine Ahnung was er meint, aber ohne Code nichts los
-
Firefighter schrieb:
Ich hab schon eine Ahnung was er meint, aber ohne Code nichts los
Meine Glaskugel sagt mir, dass er diesen Fehler sieht:
Der Operator "==" kann nicht auf Operanden vom Typ "Methodengruppe" und "Methodengruppe" angewendet werden.→ if (foo() == bar()) statt if (foo == bar)
Oder vielleicht
Für das nicht statische Feld, die Methode oder die Eigenschaft "foo()" ist ein Objektverweis erforderlich.
Für das nicht statische Feld, die Methode oder die Eigenschaft "bar()" ist ein Objektverweis erforderlich.→ if (foo() == bar()) statt if (foo() = bar())
Fehler raten. Ach herrlich.
-
µ schrieb:
Firefighter schrieb:
Ich hab schon eine Ahnung was er meint, aber ohne Code nichts los
Meine Glaskugel sagt mir, dass er diesen Fehler sieht:
Der Operator "==" kann nicht auf Operanden vom Typ "Methodengruppe" und "Methodengruppe" angewendet werden.→ if (foo() == bar()) statt if (foo == bar)
Oder vielleicht
Für das nicht statische Feld, die Methode oder die Eigenschaft "foo()" ist ein Objektverweis erforderlich.
Für das nicht statische Feld, die Methode oder die Eigenschaft "bar()" ist ein Objektverweis erforderlich.→ if (foo() == bar()) statt if (foo() = bar())
Fehler raten. Ach herrlich.
Und sogar mit technisch korrekten Fehlermeldungen. Man zieht den Hut
-
Hi,
hier ist mein Quelltext. Bei Methode1 ist dann der Vergleich. An sich sollen die zwei Methoden die Konsoleneingabe annehmen und die Berechnungsmethoden bestimmen ob der Wert weitergegeben wird oder der Konstruktorwert Gültigkeit behält, bzw. die Eingabe erneut verlangt wird.
... public class Klasse { private int iVariable; private int iVariable1; public Klasse() { iVariable = 50; iVariable1 = 250; } public int Methode { get { return iVariable; } set { iVariable = value; } } public int Methode1 { get { if (Methode <= MaxMethode) { return iVariable1; } } set { iVariable1 = value; } } public int MaxMethode { get { return BerechnungMaxMethode(); } private set { } } private int BerechnungMaxMethode() { int iMaxMethode = 0; iMaxMethode = iVariable1/5; return iMaxMethode; } ...
-
"Methode1.get": Nicht alle Codepfade geben einen Wert zurück."
Damit es durch den Compiler geht, muss der Getter von Methode1 in jedem Fall einen Wert zurückgeben, er tut das aber nur wenn die Bedingung der if-Schleife ( ;)) erfüllt ist.
Ich glaube du würfelst Properties und Methoden gewaltig durcheinander. Zwar stecken hinter set-/get-Properties tatsächlich Methoden, aber du machst es komplett wirr und falsch. Alleine schon dass zwei setter auf das gleiche Backing-Field (iVariable) zugreifen...
Vielleicht solltest Du erstmal auf Properties verzichten und versuchen Dein Problem mit "normalen" Methoden zu lösen. Ansonsten wüsste ich nicht wie man Helfen könnte, außer dem obligatorischen Verweis auf die ersten Kapitel Deines C#-Buches.
-
Ja da hab ich mich verschreiben, das soll natürlich nicht die selbe Variable sein.
Ist das also keine gute Idee Setter und Getter zu benutzen, mir ist nämlich nicht so richtig klar geworden weswegen es zwei Möglichkeiten gibt Informtionen in eine Methode zu bekommen, bzw. herauszubekommen, bzw. wann welche eingesetzt wirdWie würde man es denn andernfalls aufbauen um mein Vorhaben abzubilden?
Wie geschreiben sollte folgendes passieren:
Der Konstruktor bestückt die Methodenvarialen mit Grundwerten. Dann soll über die Konsole Werte für die Variablen abgefragt werden. Und zum Schluß soll über eine Bedingung, die als Grundlage eine Berechnung hat, geprüft werden ob der Eingegebene Wert zulässig ist und andernfalls die Eingabe wiederholen lassen.Ich dachte eigentlich das ich nicht so daneben liege
-
00Albert schrieb:
Ist das also keine gute Idee Setter und Getter zu benutzen, mir ist nämlich nicht so richtig klar geworden weswegen es zwei Möglichkeiten gibt Informtionen in eine Methode zu bekommen, bzw. herauszubekommen, bzw. wann welche eingesetzt wird
Grundsätzlich sind Getter/Setter eine gute Idee, deswegen wurde in C# ja auch die "Property" als neues Sprachfeature eingeführt. Das Problem liegt darin das Du offensichtlich noch nicht erkannt hast das Property und Methode zwei unterschiedliche Sprachfeatures sind.
Beispiel:
// Das ist keine Methode sondern eine Property. public int Methode { get { return iVariable; } set { iVariable = value; } }
// Das ist eine Methode private int BerechnungMaxMethode() { int iMaxMethode = 0; iMaxMethode = iVariable1/5; return iMaxMethode; }