Usos y explicación de var en C#
Ejemplos de var
en C#. Cuándo usar, cómo usar y razones para usar.
A partir de la versión 3 de C# se puede usar la palabra reservada var
, que me recuerda un poco a Kotlin, Go, y JavaScript.
En este post te voy a mostrar cómo usar var
, cuál es su propósito, cuándo usarla y cuándo no.
Uso de var en C#
Usamos var
cuando deseamos declarar una variable pero no queremos indicar el tipo de dato, y dejamos que el compilador lo infiera. Algo así como el duck typing.
Ya que declarar así:
int edad = 5;
Es lo mismo que:
var edad = 5;
Veamos el ejemplo. Con var en C# es así:
using System;
class MainClass {
public static void Main (string[] args) {
var edad = 5;
Console.WriteLine(edad);
}
}
Y cuando ponemos el tipo (int
), también funciona:
using System;
class MainClass {
public static void Main (string[] args) {
int edad = 5;
Console.WriteLine(edad);
}
}
Por lo tanto, hablando del lenguaje (y no de los paradigmas o buenas prácticas) es lo mismo declarar con var
que con el tipo de dato, ya que el compilador infiere el tipo a partir del valor.
Restricciones de var
Aunque parezca que gracias a var
se pierde el tipado fuerte de C# la realidad es que no, ya que el compilador infiere el tipo, y le asigna el tipo a esa variable pero más tarde ya no se puede cambiar.
Es decir, lo siguiente es erróneo:
var nombre = "Luis";
nombre = 3;
Ya que nombre
, aunque fue declarado con var
, es un string
.
Otra restricción es que cuando usamos var
debemos declarar inmediatamente el valor, no podemos dejarla declara así:
var nombre;
¿Cuándo usar var en c#?
Ahora sí dejamos la parte técnica y vamos a los paradigmas. Recomiendo usar var cuando se declare una variable local y simple. Por ejemplo:
var nombre = "Luis";
Y recomiendo evitarlo cuando el tipo no se pueda inferir por el ser humano. Por ejemplo:
var ubicacion = usuario.obtenerUbicacion();
Ahí, aunque estamos obteniendo la ubicación de un usuario, ¿qué tipo de dato estamos recibiendo? ¿Es un objeto de tipo LatitudLongitud
? ¿Son las coordenadas como cadena? ¿No es la ubicación GPS?
Para el caso de arriba, suponiendo que es la latitud y longitud de las coordenadas, podríamos hacer esto:
LatitudLongitud ubicacion = usuario.obtenerUbicacion();
Y en el peor de los casos, si queremos usar var forzosamente, al menos deberíamos escribir un nombre descriptivo. Por ejemplo:
var latitudLongitudUsuario = usuario.obtenerUbicacion();
Conclusión
En conclusión usar var
cuando sean variables sencillas, fáciles de inferir por el ser humano y no ambiguas.
No te preocupes, usar var
no hará que haya errores de programación, pues el compilador seguirá funcionando como siempre.