2012-05-13 19 views
7

Powiel możliwe:
What's the point of the var keyword?
What advantages does using var have over the explicit type in C#?Dlaczego warto używać var ​​zamiast nazwy klasy?

zawsze widzę innych ludzi produkujących kod jak:

var SMTP = new smtpclient();

Ale dlaczego w takim przypadku należy użyć var zamiast SmtpClient? I zawsze zastosowanie

smtpclient SMTP = nowy smtpclient();

Czy var jest bardziej wydajny? Dlaczego warto używać var zamiast rzeczywistego typu zmiennej? Czy czegoś brakuje?

+1

możliwy duplikat [Jakie korzyści ma użycie var w stosunku do jawnego typu w C#?] (Http://stackoverflow.com/questions/3425966/what-advantages-does-using-var-have-over-the- explicit-type-in-c) zobacz także [C# 'var' vs wydajność określonego typu] (http://stackoverflow.com/questions/356846/c-sharp-var-vs-specific-type-performance) –

+0

@MattBall Lol i ** To ** również duplikat –

Odpowiedz

16

Wyobraź sobie to.

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

var jest przydatna do takich rzeczy.

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

Znacznie prostsze. Punkt var jest taki sam jak auto w C++ 11, kompilator zna typ, więc dlaczego musimy się tak bardzo powtarzać. Osobiście rzadko używam var, ale tylko dla długich deklaracji. To tylko cukier syntaktyczny.

+0

Będę defintalley zacząć używać częściej –

15

Nie, nie chodzi o efektywność, chodzi tylko o styl pisania kodu.

Biorąc pod uwagę, że chodzi o styl , reguły tej nie można zastosować zawsze.

Immagine następujące snipplet:

var myVar = Some3dPartFunction(), co jest typ od myVar? To nie jest absolutnie jasne, i nie jest dobre, z punktu widzenia stylu kodu, aby pisać w ten sposób.

Krótko mówiąc, wybierz odpowiednie pisanie w sprytny sposób.

+0

To ma sens, dzięki –

+1

Jeśli nie wiesz, która funkcja zwraca nazwę, jest to źle nazwana funkcja. –

+1

@ MatějZábský: w idealnym świecie zgodziłbym się z tobą, ale kodowanie w prawdziwym biurze zawsze ** spotykam źle nazwane funkcje, zmienne, nie komentuję kodu, nie testowałem kodu ... cokolwiek. Nie możesz zaprojektować frameworka dopasowanego do potrzeb idealnego świata .. – Tigran

1

Jest to cukier syntaktyczny:

var smtp = new SmtpClient(); 

jest równa:

SmtpClient smtp = new SmtpClient(); 

To nowa funkcja w C# 3.0, zwany typ wnioskowania.

1

Nie, nie jest bardziej wydajny. To jest to samo, co pisz dokładnie ten typ. W rzeczywistości dobre programowanie zapisuje typ zmiennej zamiast używać var, ponieważ sprawia, że ​​kod jest bardziej czytelny.

Więc:

var smtp = new SmtpClient(); 

I:

SmtpClient smtp = new SmtpClient(); 

to samo napisał na dwa różne sposoby.

Powiązane problemy