Autor Beitrag
Vegeto
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mi 23.07.14 13:53 
Hallo,

habe mal eine Frage, ob sowas überhaupt möglich ist.

Also ich habe eine Methode mit 4 Parameter erstellten, doch nur die ersten beiden sind Plicht Parameter, diese muss der benutzer ausfüllen, die anderen brauch er nur optional füllen. jetzt wollte ich wissen ob ich die Methode so einstellen kann das wenn er die Methode aufruft, dass wenn er die plichtfelder gefüllt hat, die anderen standartmäßig auf "" oder 0 setzt. Oder muss ich für die Methode Überladungen erstellen, mit jedem weiterem Parameter?

Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public void myMethod(string plicht1, string plicht2, string optinal1, int optinal2)
{
// do Somethink
// Die Parameter werden alle verwendet...
}

//benutzung der Methode
// eiegntlich würde ich das so haben!
myMethod("PLICHT","Plicht!");
// doch so muss ich das machen
myMethod("PLICHT","Plicht!","",0)


Ist das überhaupt so möglich wie ich das will oder muss ich dann mit Überladungen arbeiten???

Liebe Grüße
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mi 23.07.14 14:04 
Überladung ist eine gängige Variante, aber es gibt auch die Möglichkeit der optionalen Parameter.
Allerdings müssen die trotzdem einen Wert bekommen, der wird dann nur als Standard-Wert fest gelegt, wobei das nur ein konstanter Wert sein darf.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public void myMethod(string plicht1, string plicht2, string optinal1 = "s"int optinal2 = 5)
{
    // do Somethink
    // Die Parameter werden alle verwendet...
}


Wie gesagt, es müssen Konstanten sein, oder null.

Für diesen Beitrag haben gedankt: Vegeto
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 23.07.14 14:09 
Ab C# 4 kannst du Optionale Parameter benutzen. Bei dir z.B.
ausblenden C#-Quelltext
1:
public void myMethod(string pflicht1, string pflicht2, string optional1 = nullint optional2 = 0)					

Bei vorigen Compiler-Versionen (nicht .NET-Versionen) geht es nur mittels Überladung.

Jedoch gibt es auch Nachteile bei den optionalen Parametern: The Future of C# (C# 4.0) ff. (klar, jetzt keine Future mehr ;-)

Für diesen Beitrag haben gedankt: Vegeto
Vegeto Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Mi 23.07.14 14:45 
Hi,

ahhh coole Sache. war mir nicht bewusst und dennoch kann ich die Variable beim methodenaufruf anpassen.


Danke...

lg
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 23.07.14 15:38 
An der Stelle ist es hilfreich zu wissen das es auch benannte Parameter gibt.
Was ist wenn du einen optionalen Parameter angeben willst den in der Signatur vorgehenden aber nicht.

Bei den gezeigten Beispielen wäre der Aufruf dann (optional1 wäre dann der definierte Default)

ausblenden C#-Quelltext
1:
myMethod("pflicht1""pflicht2", optional2: 5);					


Ist übrigens auch hilfreich wenn man boolesche Parameter hat deren Sinn sich sonst so schlecht ergeben. Da kann man dann den Parameternamen auch aus rein dokumentarischen Gründen angeben.
Aka
ausblenden C#-Quelltext
1:
Methode(truefalsetruetruefalse);					

Was machen die einzelnen Parameter? Da hilft natürlich der Name anstatt sich einen Wolf zu dokumentieren.