2012-05-13 18 views
7

Mögliche Duplizieren:
What's the point of the var keyword?
What advantages does using var have over the explicit type in C#?Warum var anstelle des Klassennamens verwenden?

ich immer andere Leute sehen, produzieren Code wie:

var smtp = new SmtpClient();

Aber warum var statt SmtpClient in diesem Fall verwenden? Ich IMMER Verwendung

SmtpClient smtp = new SmtpClient();

Ist var effizienter? Warum anstelle des eigentlichen Variablentyps var verwenden? Fehle ich etwas?

+1

mögliche Duplikate von [Welche Vorteile hat die Verwendung von Var über den expliziten Typ in C#?] (Http://stackoverflow.com/questions/3425966/what-advantages-does-using-var-have-over-the- explicit-type-in-c) Siehe auch [C# 'var' vs. spezifische Typ-Performance] (http://stackoverflow.com/questions/356846/c-sharp-var-vs-specific-type-performance) –

+0

@MattBall Lol und ** DAS ist ein Duplikat zu –

Antwort

16

Stellen Sie sich das vor.

Dictionary<Dictionary<String, String>, String> items = new Dictionary<Dictionary<String, String>, String>(); 

var ist nützlich für solche Dinge.

var items = new Dictionary<Dictionary<String, String>, String>(); 

Viel einfacher. Der Punkt var ist der gleiche wie auto in C++ 11, der Compiler kennt den Typ also warum müssen wir uns so sehr wiederholen. Ich persönlich benutze var selten, aber nur für längere Deklarationen. Es ist nur syntaktischer Zucker.

+0

Ich werde definitalle beginnen, häufiger zu verwenden –

15

Nein, es geht nicht um Effizienz, es geht nur um Code-Schreibstil.

man bedenkt, dass es geht um einen Stil, könnte diese Regel nicht immer angewendet werden.

Immagine folgende snipplet:

var myVar = Some3dPartFunction(), was ist der Typ von myVar? Es ist nicht absolut klar und nicht gut, vom Code-Stil Sicht, auf diese Weise zu schreiben.

Kurz gesagt, wählen Sie geeignete Schreibweise auf eine clevere Weise.

+0

Das macht Sinn, danke –

+1

Wenn Sie nicht wissen, welche Funktion von seinem Namen zurückgibt, ist es eine schlecht benannte Funktion. –

+1

@ MatějZábský: in einer perfekten Welt würde ich Ihnen zustimmen, aber Codierung im realen Büro ** ** ** ** immer treffen schlecht benannte Funktionen, Variablen, nicht kommentierter Code, nicht getestet Code .. was auch immer. Du kannst kein Framework entwerfen, das den Bedürfnissen der perfekten Welt entspricht. – Tigran

1

Es ist syntaktischer Zucker:

var smtp = new SmtpClient(); 

ist gleich:

SmtpClient smtp = new SmtpClient(); 

Es ist eine neue Funktion in C# 3.0, Typinferenz genannt.

1

Nein, es ist nicht effizienter. Es ist die gleiche Sache, den Typ explizit zu schreiben. In der Tat ist es eine gute Programmierung schreiben Sie den Typ der Variablen anstelle von var, weil es den Code lesbarer macht.So

:

var smtp = new SmtpClient(); 

Und:

SmtpClient smtp = new SmtpClient(); 

sind die gleiche Sache auf zwei verschiedene Arten geschrieben.

Verwandte Themen