Entwickler-Ecke

C# - Die Sprache - [Einsteiger] Gibt es optionale Methodenparameter in C# ?


miniC# - Mi 19.11.08 12:22
Titel: [Einsteiger] Gibt es optionale Methodenparameter in C# ?
Gibt es in C# die Möglichkeit einen optionalen Methodenparameter zu übergeben, wie es in VB möglich ist ?


Quelltext
1:
private function foo (ByVal bar as String, Optional ByVal wert as Boolean = False)                    


Methodenparameter (C#-Referenz) [http://msdn.microsoft.com/de-de/library/8f1hz171.aspx] schweigt sich zu dem Thema aus ...


Moderiert von user profile iconChristian S.: Topic aus Basistechnologien verschoben am Mi 19.11.2008 um 11:56


JüTho - Mi 19.11.08 13:25

Nein, gibt es nicht. Das ist für die Zukunft vorgesehen, siehe C# 4.0 [http://weblogs.asp.net/jguadagno/archive/2008/10/27/pdc-2008-experience-day-1-session-quot-the-future-of-c-quot.aspx]. Stattdessen gibt es die Möglichkeit der Überladungen.

Jürgen


miniC# - Mi 19.11.08 14:54

Hi,

zunächst danke für deine Antwort. Da ich erst seit kurzem C# lerne , verstehe ich deine Antwort aber leider nicht :) Das Prinzip der Überladung habe ich zwar schon behandelt, aber alle Beispiele, die ich bis jetzt zur Überladung gelesen habe, bezogen sich auf die Operatorenüberladung ("Wie implementiere ich den Additionsoperator für meine struct XYZ").

Habe jetzt auch nochmal zusätzlich MDSN und andere Quellen zur Überladung befragt, aber die Informationen sind dünn gestreut und behandeln eben immer jene Operatorenüberladung. Hättest du eventuell weiterführende Informationen zum Überladen - besonders bezüglich einer Optional Funktion - zur Hand (Link, Codesnip oder Ähnliches) ?

Gruß,
miniC#


Ralf Jansen - Mi 19.11.08 15:01

Es ging Jürgen darum das du die Methode überladen sollst.
Also eine weitere Methode mit dem selben Methodennamen aber anderer Parametersignatur.

In deinem Beispiel sähe das so aus um das selbe Verhalten zu bekommen.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void foo (string bar, bool wert)
{
   // tu was wichtiges
}

private void foo (string bar)
{
    foo(bar, false);
}


miniC# - Mi 19.11.08 15:11

Ah, ok jetzt ist der Groschen gefallen :) Dank dir.