2013-04-10 10 views
5

Wo soll ich eine Instanz erstellen? welcher Weg ist besser und warum?Asp.net MVC4, C# Objektinstanz erstellen

1) Im Konstruktor?

public class UserController : Controller 
{ 
    private UnitOfWork unitofwork; 

    public UserController(){ 
     unitofwork = new UnitofWork(); 
    } 

    public ActionResult DoStuff(){ 
    ... 

2) als private Klasse Mitglied?

public class UserController : Controller 
{ 
    private UnitOfWork unitofwork = new UnitofWork(); 

    public ActionResult DoStuff(){ 
    ... 
+1

sowohl die Schnipsel auf den exakt gleichen Code würde kompilieren unten imo. –

Antwort

1

Es ist persönliche Vorliebe, wirklich. Manche Leute ziehen es vor, außerhalb des Konstruktors zu initialisieren, weil es weniger die Chance gibt, dass jemand anders mitmacht und ein neues Mitglied hinzufügt, ohne es zu initialisieren, da ein Beispiel direkt vor ihnen liegt.

Wenn die Initialisierung eines Objekts eine Logik erfordert oder Parameter erfordert, ist es in der Regel besser, dies im Konstruktor zu tun. Was auch immer Sie wählen, stellen Sie sicher, dass Sie konsistent bleiben.

EDIT: Hinweis, auch im Konstruktor initialisieren können Sie Anrufe nicht-statische Methoden und Eigenschaften machen

0

Je nachdem, was Sie erreichen möchten. Wenn Sie es mit einem Feld tun, wird es vor der Konstruktor initialisiert, so dass Sie später andere Dinge tun können.

In diesem speziellen Beispiel wäre es kein großer Unterschied (außer der Sequenz).

0

Ich bevorzuge, es im Konstruktor zu behalten, wie es Ihnen erlaubt, es auf der Linie nach Bedarf zu verlängern, ohne alle Stellen zu aktualisieren, von denen Sie es angerufen haben, und auch Ihren Anrufcode sauberer und prägnanter hält.