Autor Beitrag
Leuchtturm
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Mi 10.10.07 14:29 
Hi,
ich stelle mir gerade die Frage ob man innerhalb einer Klasse auf die Variable oder auf die Fields zugreifen sollte. Was meint ihr dazu :?:
BSP:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
public class Auto
{
    private int _hubraum;
    public int Hubraum
    {
      get{ return _hubraum }
      set{ _hubraum = value }
    }
    public Auto()
    {
         _hubraum = 1500;
    }
}

oder so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public class Auto
{
    private int _hubraum;
    public int Hubraum
    {
      get{ return _hubraum }
      set{ _hubraum = value }
    }
      public Auto
    {
      Hubraum = 1500;   
    }

mfg
Leuchtturm :wave:
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 10.10.07 15:54 
Grundsätzlich wird empfohlen, über die Properties (in Deinem Beispiel: Hubraum) zuzugreifen: Im Setter können auch Gültigkeitsprüfungen angegeben werden; die werden dann auch innerhalb der Klasse ausgeführt. Bei "einfachen" Zuweisungen ist es aber gleichgültig. Jürgen
Leuchtturm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Mi 10.10.07 15:59 
Vielen Dank für die Antwort. Ich wusste ja das Properties empfohlen werden, aber ich wusste halt nicht wie das innerhalb einer Klasse aussieht :wink:
Orell
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 10.10.07 18:12 
Es gibt schon ein paar Fälle, in denen der Getter/Setter absichtlich übergangen werden soll, aber in allen anderen Fällen spricht einfach nichts gegen die Verwendung der Property. Ich würde am Liebsten das Feld innerhalb der Property definieren können (tut neben dem üblichen Information Hiding auch den IntelliSense-Augen gut), aber da muss ich wohl auf die Fertigstellung meiner eigenen .Net-Sprache warten :mrgreen: .
CSharper2
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Sa 14.03.09 13:05 
hi zusammen,

ich hänge grad an folgendem problem:

ausgangssituation sind drei klassen A, B, C.

- klasse A definiert verschiedene properties (set, get).

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
private string _zeichen;
public string Zeichen
{
  get
  {
     return _zeichen;
  }
  set
  {
     _zeichen = value;
  }
}


- klasse B greift auf props von A zu und soll diese mit werten versehen; ferner eine C-methode aufrufen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
A a = New A();
C c = New C();

a.Zeichen = "test";
c.schreibe();


- klasse C soll nun diesen wert "test" erstmal testweise in eine message packen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
A a = New A();

public void schreibe()
{
  Messagebox.Show(a.Zeichen); 
}


nun würde die messagebox aber hier nix anzeigen, da die property Zeichen aus A null ist.

ich will es vermeiden, oop untypischn mit globlen felden zu arbeiten.
aber irgendwie komme ich mit meiner variante auch nicht wirklich weiter.
wie erreiche ich nun, dass der wert für C erhalten bleibt??
möchte es aber auch zwingend so konstruieren, dass A wirklich nur die "datenklasse" ist, aus der sich die anderen klassen bedienen. B soll dabei die props aus A setzen und C (D, E, F...) diese auslesen und weiterverwerten.

könnt ihr mir in etwa folgen? könnt ihr meinen fehler feststellen???
und bitte mich nicht zerreißen. ;-)

danke und gruß
csharper2
Leuchtturm Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Sa 14.03.09 13:51 
Wenn ich dich jetzt richtig verstanden habe, wäre es imo am besten, wnen du a.zeichen als parameteran c.schreibe übergibst ;)
oder hab ich was falsch verstanden?
Vielleicht quatsch cih acuh totalen Schwachsinn. Ich hab schon länger nix größeres mehr programmiert :shock:

_________________
Ich bin dafür verantwortlich was ich sage - nicht dafür was du verstehst.
CSharper2
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 15.03.09 13:29 
mit der übergabe an c.schreibe ginge das schon.
nur wollte ich eben das vermeiden, alle methoden-aufrufe zu parametrisieren. :shock:

dann bräuchte ich in dem moment ja nicht mehr die properties aus klasse a. aber
die soll(te) ja meine datenklasse werden, aus der sich alle anderen bedienen. ;-)