Laden...

Wann/Wo erzeugt ihr Objekte (Konstruktor vs. direke Initialisierung)?

Erstellt von chavez vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.343 Views
C
chavez Themenstarter:in
252 Beiträge seit 2007
vor 15 Jahren
Wann/Wo erzeugt ihr Objekte (Konstruktor vs. direke Initialisierung)?

Mich würde mal interessieren wann ihr Objekte innerhalb einer Klasse erzeugt und ob es da so eine Art Guideline dafür gibt.
1: im Kontruktor


public class Foo
{
  Bar b;
  public Foo()
  {
    b = new Bar();
  }
}

2: bei der Deklaration


public class Foo
{
  Bar b = new Bar();
  public Foo()
  {
  }
}

Bringt eines der beiden Vorteile, oder ist es egal?

C
401 Beiträge seit 2007
vor 15 Jahren

Also Instanzvariablen werden grundsätzlich im Konstruktor erzeugt, da du sie ja vorher nicht brauchst. Klassenvariablen hingegen erzeugst du direkt bei der Deklaration, da sie immer zugänglich sein müssen.

104 Beiträge seit 2004
vor 15 Jahren

Zur Initialisierung von Klassenvariablen sollte man imho den statischen Konstruktur verwenden.

Gruß

Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Corpsegrinder,

man kann Instanzvariablen sowohl im Konstruktor als auch direkt initialisieren. Das gleiche gibt für Klassenvariablen (also statischer Konstruktor vs. direkt initialisieren). Man hat also eigentlich immer die Wahl (es sein denn, man braucht für die Initialisierung die Parameter des Konstruktors) ...

Hallo chavez,

... insofern ist es im Wesentlichen Geschmackssache.

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

man kann Instanzvariablen sowohl im Konstruktor als auch direkt initialisieren. Das gleiche gibt für Klassenvariablen (also statischer Konstruktor vs. direkt initialisieren)

Wenn die Reihenfolge der Initalisierung zwingend eine Rolle spielt, die Initalisierung im Konstruktor machen. Bei statischen Konstruktoren gibt es einen großen Unterschied im Bereich Geschwindigkeit der Initalisierung. Direkte Feldzuweisung sind in etwa 10 mal schneller als das über einen extra statischen Konstruktor zu machen.

Brad Abrams: Perf penalty Static Constructor
Dot Net Perls: Static Constructor - C#

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...