c# - read - ¿Por qué debería usar var en lugar de un tipo?
read var c# (4)
Posible duplicado:
ReSharper y var
Después de haber instalado ReSharper, exige (mediante advertencias) que use var siempre que sea posible, por ejemplo
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper quiere convertirlo en
var ue = (UnhandledExceptionEventArgs) t;
Me gusta más la primera versión, ¿hay alguna razón para preferir var ? ¿mejor interpretación? ¿cualquier cosa? o es solo un estilo de código?
Como han dicho los demás, no hay diferencia en el código compilado (IL) cuando se usa cualquiera de los siguientes:
var x1 = new object();
object x2 = new object;
Supongo que Resharper te advierte porque es [en mi opinión] más fácil leer el primer ejemplo que el segundo. Además, ¿cuál es la necesidad de repetir el nombre del tipo dos veces?
Considere lo siguiente y obtendrá lo que quiero decir:
KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Es mucho más fácil leer esto en su lugar:
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Cuando dices "por advertencias", ¿qué quieres decir exactamente? Por lo general, lo he visto dar una pista de que es posible que desee utilizar var, pero nada tan duro como una advertencia.
No hay diferencia de rendimiento con var: el código se compila en la misma IL. El beneficio potencial está en la legibilidad: si ya ha hecho que el tipo de la variable sea claro como el cristal en el RHS de la asignación (por ejemplo, mediante un cast o una llamada de constructor), ¿dónde está el beneficio de tenerlo también en el LHS? Sin embargo, es una preferencia personal.
Si no desea que R # sugiera el uso de var, simplemente cambie las opciones. Una cosa sobre ReSharper: es muy configurable :)
En este caso , es solo un estilo de codificación.
El uso de var
solo es necesario cuando se trata de tipos anónimos.
En otras situaciones, es una cuestión de gusto.
Es solo un estilo de codificación. El compilador genera exactamente lo mismo para ambas variantes.
Ver también aquí para la pregunta de rendimiento: