Überladene Methode - Was hat es damit auf sich?
-
Hallo
Ich fange gerade mit einem C# Kurs an, dabei wird des Öfteren von "überladenen Methoden" gesprochen. Ich wüsste nun mal gerne, was es damit genau auf sich hat. Eigentlich klingt dass nach einer Fehlerquelle, aber anscheinend bringt es auch was?
Vielleicht könnte mich jemand aufklären^^
Danke
-
Sowas
class A { public void doit(int arg) { } public void doit(double arg) { } // Überladen } public class Program { static void Main(string[] args) { var a = new A(); a.doit(1); // doit(int) a.doit(1.0); // doit(double) } }
-
also wäre das Problem, dass man hier den Datentyp vorher nicht konvertiert?
-
wassermine schrieb:
also wäre das Problem, dass man hier den Datentyp vorher nicht konvertiert?
Ja, hier ist es schon komisch. Aber was hälst Du von
public int summe(int a,int b) { return a+b;} public int summe(int a,int b,int c) { return a+b+c;}
?
Ok, könnte man auch mit Default-Argumenten machen.
Aber dann halt sowas
http://msdn.microsoft.com/en-us/library/system.drawing.graphics.fillrectangle.aspx
und der Benutzer kann sich aussuchen, welche Überladung ihm am besten paßt.Überladungen können auch nicht wie hier bei FillRectangle im Prinzip das gleiche machen, sondern total was anderes. Leider fällt mir kein gutes Beispiel ein.
-
wassermine schrieb:
also wäre das Problem, dass man hier den Datentyp vorher nicht konvertiert?
Nein ich hab's nur schnell konstruktiert, da gab's sonst kein Problem. Der Vorteil ist halt du hast einen Funktionsname und nicht
DoItWithInt(...)
DoItWithFloat(...)
DoItWithIntAndFloat(...)Wie Volkard schon angedeutet könntest du auch hinter der Funktion jeweils ein anderes Verhalten programmieren.
-
Wirklich schlecht ist die Wikipedia-Erklärung eigentlich auch nicht. Gewürzt mit einer Priese Polymorphie sollte das Ganze sogar verständlich werden ...
-
Perfektes Beispiel: MessageBox.Show(), oder Convert.ToInt()
Generell im .Net findest sehr viele überladene Methoden, das ist echt ein Segen.
|> Überladung ist was sehr gutes was ich in anderen Sprachen schon vermisst habe.