Entwickler-Ecke

C# - Die Sprache - Vorbelegung von übergabeparametern c#


schwandi - So 20.02.11 16:44
Titel: Vorbelegung von übergabeparametern c#
Hallo :-)

Ich würde gerne in C# die Übergabeparameter einer Methode oder ähnliches, vorbelegen lassen, sprich wenn man sie nicht angibt soll einfach der vordefinierte wert verwendet werden.

In C++ funktioniert das ja so:

C#-Quelltext
1:
2:
3:
4:
5:
void xysetzen(int xx=0int yy=0)  //Uebergabewerte werden mit 
      {      //Defaultwerten vorbelegt 
           x=xx; 
      y=yy; 
      }


Wenn man es genau gleich in C# probiert kommt folgenden Fehlermeldung:

"Standardparameterbezeichner sind unzulässig"

Gibt es irgendeine Möglichkeit das in C# zu realisieren?

lg schwandi


Kha - So 20.02.11 17:16

Du solltest mal auf C# 4 updaten - oder wenigstens die Version in deinen Postings hinterlegen ;) .
In früheren Versionen konnten optionale Parameter nur durch Überladung simuliert werden.


schwandi - So 20.02.11 23:34

ok, sry dachte nicht das es damit zusammenhängt :/

Habe 3.5 :/

Kann man das den updaten oder muss ich komplett neu instalieren?

lg


Kha - Mo 21.02.11 01:01

Wenn du Visual Studio benutzt, brauchst du VS2010 - warum auch immer man überhaupt bei einer älteren Version bleibt, wenn man nicht dazu gezwungen ist :nixweiss: .


Th69 - Mo 21.02.11 11:47

Hallo zusammen,

die optionalen Parameter sollte man aber nur für COM-Programmierung einsetzen, nicht für den Ersatz von überladenen Methoden. Gerade bei assembly-übergreifender Programmierung führt dies evtl. zu Unstimmigkeiten.

Golo Roden (Autor des Buches Auf der Fährte von C# (Guide To C#) [http://www.guidetocsharp.de/] hat dazu einen guten Beitrag geschrieben: http://www.des-eisbaeren-blog.de/post/2009/06/10/Fur-und-wider-C-40.aspx (unterer Abschnitt)


schwandi - Mo 21.02.11 14:11

Ok, dann werd ich wohl updaten "müssen"

Mir war VS2010 immer unsympatisch, und alles was ich brauchte konnte auch das 2008er, also sah ich keinen Grund

lg


Kha - Mo 21.02.11 14:52

Ach herrje, der Herr Roden...
Anscheinend besteht seine Hauptaussage darin, dass Breaking Changes in einer Library aufrufenden Code brechen können, solange dieser nicht neu kompiliert wird. Wow, welch tiefschürfende Erkenntnis! Noch besser sind nur noch seine Argumente gegen benannte Parameter: ...ups, außer der Behauptung selbst stehen da ja gar keine. Und dass er den Nachweis, wo MS von den Features abrät, schuldig bleibt, hat er ja selbst zugestanden.
Wer auf Nummer sicher gehen will, benutzt eben jedes Mal null als Default-Wert und dann schön den ??-Operator. Dann ist man auch ziemlich nahe an der Implementierung von F# dran, die tatsächlich zur Laufzeit stattfindet.


Th69 - Mo 21.02.11 17:42

Oh, ich wußte nicht, daß der Herr Golen so polarisiert...