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?
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.
Zur Initialisierung von Klassenvariablen sollte man imho den statischen Konstruktur verwenden.
Gruß
Schaut mal im IRC vorbei:
Server: irc.euirc.net
Channel: #C#
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
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...