2012-05-13 22 views
7

Duplicar posible:
What's the point of the var keyword?
What advantages does using var have over the explicit type in C#?¿Por qué usar var en lugar del nombre de clase?

siempre veo a otras personas productoras de código como:

var = smtp nueva SmtpClient();

¿Pero por qué usar var en lugar de SmtpClient en este caso? I SIEMPRE uso

SmtpClient smtp = new SmtpClient();

¿Es var más eficiente? ¿Por qué usar var en lugar del tipo de variable real? ¿Me estoy perdiendo de algo?

+1

posible duplicado de [¿Qué ventajas tiene usar var sobre el tipo explícito en C#?] (Http://stackoverflow.com/questions/3425966/what-advantages-does-using-var-have-over-the- explicit-type-in-c) vea también [C# 'var' versus performance de tipo específico] (http://stackoverflow.com/questions/356846/c-sharp-var-vs-specific-type-performance) –

+0

@MattBall Lol y ** ES ** un duplicado también –

Respuesta

16

Imagine esto.

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

var es útil para cosas como esa.

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

Mucho más simple. El punto de var es el mismo que el de auto en C++ 11, el compilador conoce el tipo, entonces, ¿por qué debemos repetirnos tanto? Yo personalmente uso var raramente, pero solo para declaraciones largas. Es solo azúcar sintáctico.

+0

Definitivamente comenzaré a usar más a menudo –

15

No, no se trata de eficiencia, solo se trata de estilo de escritura de código.

Teniendo en cuenta que se trata de un estilo , esta regla no se podría aplicar siempre.

Immagine siguiente snipplet:

var myVar = Some3dPartFunction(), ¿cuál es el tipo de myVar? No es del todo claro, y no es bueno, desde el punto de vista del estilo del código, escribir de esta manera.

En resumen, elija la escritura adecuada de una manera inteligente.

+0

Eso tiene sentido, gracias –

+1

Si no puede distinguir qué función devuelve su nombre, es una función mal nombrada. –

+1

@ MatějZábský: en un mundo perfecto, estaría de acuerdo contigo, pero la codificación en la oficina real ** siempre ** encuentro funciones mal nombradas, variables, código no comentado, código no probado ... lo que sea. No se puede diseñar un marco que se ajuste a las necesidades del mundo perfecto. – Tigran

1

Es el azúcar sintáctica:

var smtp = new SmtpClient(); 

es igual a:

SmtpClient smtp = new SmtpClient(); 

Es una característica nueva en C# 3.0, llamada inferencia de tipos.

1

No, no es más eficiente. Es lo mismo escribir explícitamente el tipo. De hecho, es una buena programación escribir el tipo de la variable en lugar de usar var porque hace que el código sea más legible.

Así:

var smtp = new SmtpClient(); 

Y:

SmtpClient smtp = new SmtpClient(); 

son la misma cosa escribió en dos formas diferentes.

Cuestiones relacionadas