.NET
Unbegrenzte Anzahl an Parametern uebergeben
Posted on .Mir ist aufgefallen, dass viele gar nicht wissen, dass man Methoden so gestalten kann, dass diese eine unbestimmte menge an Parametern akzeptieren. Das gibt es sowohl in Java als auch in .NET (und wohl jeder anderen höheren Programmiersprache)
Wie sieht das Ganze aus? Naja wenn ihr schon mit C#/.NET Gearbeitet habt werdet ihr wohl nicht um diese Funktion herum gekommen sein:
string var = String.Format("Hallo mein Name ist {0} und ich komme aus {1}", "Bernd", "Kassel");Die Zahlen in den Geschweiften Klammern sind hierbei Platzhalter, die später über eine Variable gefüllt werden. Von diesen Platzhaltern kann man beliebig viele angeben, dementsprechend müssen dann aber auch genauso viele Parameter mit den Werten angegeben werden.
Wie sieht hier die Deklaration dieser Methode aus?
public void DoSomething(int someValue, params string[] values) { foreach (string value in values){ Console.WriteLine(value); } }Diese Methode nimmt nun einen normalen int Parameter an und ab dann können beliebig viele Werte vom Typ String folgen:
DoSomething(12345, "Hallo", "Wer", "Bist", "Du");Genauso kann man das auch in Java machen, hier ist es sogar etwas schöner gelöst wie ich finde:
//Methoden Deklaration public DoSomething(int someValue, String... values) { for(String value : values){ System.out.println(value); } } //Nutzung: DoSomething(12345, "Hallo", "Wer", "Bist", "Du");In Java werden hier nach dem Variablentyp drei Punkte angehängt die signalisieren, dass dieser Typ nun beliebig oft folgen kann.
Dabei wird intern aber auch nur ein Array mit den Werten erzeugt, das kann man bei der .NET Variante bereits in der Deklaration erkennen. So lässt sich in Java die main-Methode auch so schreiben, ohne dass es zu Problemen kommt:
public static void main(String... args) { for(String s : args){ System.out.println(s); } }Es sei an dieser Stelle noch erwähnt, dass der Parameter, der beliebig oft folgen kann immer als letztes angegeben werden muss – aus offensichtlichen Gründen 😉
Diese Schreibweise kann an einigen Stellen für deutlich bessere Lesbarkeit sorgen und vereinfacht einfach nur die Anwendung der Funktionen, sollte man auf jeden Fall schon mal gesehen haben.
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author bigbasti87
Posted at 13:48 5. Januar 2011.
Bloggd: Unbegrenzte Anzahl an Parametern übergeben – http://blog.bigbasti.com/unbegrenzte-anz…
Author ich
Posted at 10:29 21. Januar 2011.
Im Title fehlt bei „übergeben“ das ü da steht nur „bergeben“ 😉
Author admin
Posted at 10:32 21. Januar 2011.
Stimmt, die Schriftart schluckt leider Umlaute – werde ich korrigieren danke!
Author james
Posted at 12:33 2. Mai 2012.
Hallo Admin,
Ihr Java Programm, wird so nicht funktionieren, da Sie einen kleinen Fehler gemacht haben.
Entweder ändern sie im Kopf der Foreach-Schleife das vaule in value um oder sie ändern in der Schleife, das value in vaule um, vielen Dank.
for(String vaule : values){
4
System.out.println(value);
5
}
Author Sebastian Gross
Posted at 12:34 2. Mai 2012.
Hallo james,
danke für den Hinweis, da hat sich wohl ein Typo eingeschlichen 🙂
Gruß, Sebastian