var vs Objekt in C # [duplizieren]

8

Ich möchte den Unterschied zwischen var und object kennen.

Wann Var zu verwenden ist und wann Objekt zu verwenden ist.

Vor-und Nachteile der Verwendung von ihnen.

    
Sandeep 10.07.2010, 23:06
quelle

4 Antworten

17

var ist nur eine Abkürzung für "Lassen Sie den Compiler den richtigen Variablentyp für mich auswählen" (Kompilierzeit Typ-Inferenz ist der genauere Begriff).

object andererseits ist ein spezifischer Typ; Alle anderen Referenztypen stammen von object , sodass Sie einer Variablen vom Typ object alles zuweisen können.

    
Mark Rushakoff 10.07.2010, 23:09
quelle
10

var ist die Antwort, wenn Sie sich fragen, muss ich wirklich diesen langen Typnamen zweimal eingeben, zum Beispiel:

%Vor%

Warum kein Freund, Sie nicht. Verwenden Sie stattdessen var :

%Vor%

Jetzt ist myDict wirklich ein Dictionary<string, Func<List<Func<int, int, double>>, IEnumerable<Tuple<double, string>>>> , also kannst du Dinge hinzufügen, aufzählen, usw.

Wenn Sie es als object deklariert haben, konnten Sie keine Operationen ausführen, die von Dictionary bereitgestellt werden, nur die für alle Objekte gültigen.

    
Ben Voigt 10.07.2010 23:13
quelle
5

var ist immer noch stark typisiert, aber mit Objekt müssen Sie alles umwandeln.

    
Craig 10.07.2010 23:39
quelle
4
%Vor%

Im ersten Beispiel weiß der Compiler, dass foo eine Zeichenkette ist, und so können wir String-Methoden für foo aufrufen.

Im zweiten Beispiel "upcast" wir die Zeichenkette foo auf ein Objekt. Nun weiß der Compiler nicht (weil er es nicht wissen sollte!), Dass bar tatsächlich eine Zeichenkette ist, und wir können String-Methoden nicht auf bar aufrufen. Der Compiler erlaubt kein implizites Downcasting von einem Objekt (oder einem Basistyp) auf einen abgeleiteten Typ (wie System.String ). Teil der Kompilierzeit Typ Sicherheitsregeln.

    
Will 10.07.2010 23:16
quelle

Tags und Links