TOC

This article has been localized into Spanish by the community.

Tipos de datos.:

Variables de tipo Implícito (la palabra clave var)

A partir de la versión 3.0 de C #, puede usar la palabra clave var al lado izquierdo de una declaración de variable, en lugar de declarar explícitamente el tipo de la variable. Esto solo es posible dentro de un método, no a nivel de clase, donde siempre se debe especificar el tipo. Veamos cómo se ve cuando usa la palabra clave var:

int age = 42; // Explicitly typed variable

var name = "John Doe"; // Implicitly typed variable

Dos variables - la primera es declarada con el tipo int, mientras que la segunda es declarada con la palabra clave var, en vez de especificarla como string. Observe que en ambos casos se asigna un valor, porque mientras que esto no es requerido cuando se declara un tipo específico, es requerido cuando se usa la palabra clave var. La razón es que el compilador de C# deducirá el tipo de la parte derecha de la declaración - simplemente mira lo que está tratando de asignar a la variable durante la compilación y luego cambia la palabra clave var al tipo apropiado.

Esto también significa que no hay gastos generales cuando se usa la palabra clave var - es tan rápido durante el tiempo de ejecución como una variable declarada explícitamente, porque eso es esencialmente lo que es cuando .NET Framework ejecuta su código.

El primer ejemplo es muy trivial - no se ahorra mucho tiempo escribiendo "var" en lugar de "string". Sin embargo, usted a veces declarará tipos mucho más complejos, ya sea como una nueva variable o como el resultado local de una función (definida por el usuario o desde el framework). Existe la posibilidad de guardar una buena cantidad de pulsaciones de teclas en un ejemplo como este:

Dictionary<int, List<string>> dict1 = new Dictionary<int, List<string>>();

var dict2 = new Dictionary<int, List<string>>();

El resultado será exactamente el mismo, pero usted definitivamente se ahorrará algunas pulsaciones de teclas en el último ejemplo, y dado que se especifica el tipo en el lado derecho en ambos casos, prácticamente no hay pérdida en la legibilidad de su código cuando usa la palabra clave var en un ejemplo como este.

También se puede usar la palabra clave var al declarar una variable local como resultado de una llamada a un método:

var s = DateTime.Now.ToString();

Nuevamente, es más rápido y sigue siendo bastante claro qué sucede y qué tipo de variable contendrá (un string). Sin embargo, eso podría no ser en un caso como este:

var myVar = SomeMethodWithANameWhichDoesntIndicateTheReturnType();

En una situación como esta, no está nada claro qué contendrá la variable y podría estar sacrificando la legibilidad de su código. Es posible que desee considerar usar una variable de tipo explícito escrita aquí.

La palabra clave var y tipos Anónimos

Hasta ahora, los ejemplos que hemos visto con la palabra clave var provienen principalmente del departamento de "azúcar sintáctico" - son agradables de tener y más cortos de escribir, pero no son realmente un requisito. Sin embargo, cuando se trabaja con tipos anónimos (más sobre ellos más adelante), tiene sentido declarar sus objetos con la palabra clave var:

var myObj = new
{
    Name = "John Doe",
    Age = 42
};
Console.WriteLine(myObj.Name);

En este caso, realmente se necesita la palabra clave var para acceder más tarde a los campos del tipo anónimo, como se muestra en este ejemplo.

Resumen

La palabra clave var permite declarar una variable local (dentro de un método o un bucle) sin indicar explícitamente el tipo - en cambio, el compilador de C # infiere el tipo desde la parte derecha de la declaración. Esto puede ser realmente conveniente en muchas situaciones, pero también puede hacer que su código sea un poco menos legible. Puede usarlo o apegarse a declarar explícitamente los tipos de variables - como prefiera, pero se necesita para los tipos anónimos, como ya se explicó.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!