Autor Beitrag
craash
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 28.09.10 10:59 
Hallo :-)

als Anfänger in der .NET-Welt arbeite ich mich gerade durch das C#-Openbook von Galileo (openbook.galileocomp...ng.de/visual_csharp/).

Bei Abschnitt 3.7.5 geht es um automatisch implementierte Eigenschaften.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public class Circle { 
  private int xKoordinate = 0
  private int yKoordinate = 0
  ...

  public int XKoordinate { 
    get { return xKoordinate; } 
    set { xKoordinate = value; } 
  }

  public int YKoordinate { 
    get { return yKoordinate; } 
    set { yKoordinate = value; } 
  } 
}


wird daraufhin abgekürzt mit

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public class Circle { 
  public int XKoordinate {get; set;} 
  public int YKoordinate {get; set;} 
  ... 
}


Sieht ja gut aus und bestimmt ist die Frage auch ziemlich doof, aber woher weiß denn die abgekürzte Variante, auf welche private Variable sie eigentlich zugreifen soll?


Viele Grüße und schonmal vielen Dank :-)
craash
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Di 28.09.10 11:04 
Das ist quasi das Zusammenfassen von Variablendeklaration und der Eigenschaft.
-> erstellt implizit die private Variable
Necaremus
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 203
Erhaltene Danke: 18

Win > XP, Vista, 7; Android 2.1
C# > VS '08,'10; Delphi7
BeitragVerfasst: Di 28.09.10 11:07 
mal ne doofe frage dazu:

was ist besser: public int IveGotAnInt; oder public int ButMeToo {get;set;}?
ich hab bisher immer letzteres verwendet, weil ich es halt so immer gesehen habe in den code, den ich bearbeiten/erweitern sollte, aber den unterschied hab ich nie gekannt^^
craash Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 28.09.10 11:14 
Hmm also erstellt der Compiler implizit eine andere Variable mit dem private Modifizierer auf die er dann zugreift?

Folglich kann man auch nurnoch über die get/set-Methode (bzw. über den anderen Bezeichner) auf die Variable zugreifen, da sie ja nichtmehr explizit genannt ist und ich ihre Bezeichnung somit auch nicht kenne. Stimmt das so?
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Di 28.09.10 11:20 
@craash:
Ja das ist so richtig.
Es macht ja keinen Unterschied ob du nun einen Variablennamen oder einen Eigenschaftsnamen verwendet

@Necaremus:
Publicvariablen würde ich nicht verwenden.
Die Variablen sind Sache der Klasse, für die Weitergabe nach außen gibt es ja Funktionen und Eigenschaften.
Vorteil dabei ist das die Klasse selbst entscheidet wie sie damit umgeht.

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

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 28.09.10 13:13 
Der Hauptvorteil bei der Erstellung von automatischen Eigenschaften ist, daß man nachträglich die get bzw. set Funktionalität ergänzen kann, ohne die Klassenschnittstelle zu ändern. Ein weiterer Vorteil gibt es noch bzgl. DataBinding, da dieses nur mit Eigenschaften, nicht mit Feldern (Membervariablen) funktioniert.