Autor Beitrag
schwandi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21
Erhaltene Danke: 3



BeitragVerfasst: So 20.02.11 16:44 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21
Erhaltene Danke: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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#) hat dazu einen guten Beitrag geschrieben: www.des-eisbaeren-bl...-und-wider-C-40.aspx (unterer Abschnitt)
schwandi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21
Erhaltene Danke: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 21.02.11 17:42 
Oh, ich wußte nicht, daß der Herr Golen so polarisiert...