En los lenguajes de programación modernos, la deducción de tipo por contexto es una característica que permite al compilador inferir el tipo de una variable por el contexto en el que se utiliza.
El objetivo de la deducción de tipo es hacer el código más conciso, sencillo de leer y más mantenible, evitando la repetición de código innecesario.
Si quieres aprender más sobre Deducción de tipo por contexto en
consulta el Curso de Introducción a la Programación leer más
Deducción con var
En C# 3.0 se introdujo la palabra clave var
, que se utiliza para declarar variables en las que el compilador deduce automáticamente el tipo de la variable en base al valor con el que se inicializa.
La sintaxis para utilizar var
es muy sencilla:
var nombreVariable = expresionInicializacion;
Por ejemplo:
var numero = 42; // `numero` es inferido como `int`
var mensaje = "Hola Mundo"; // `mensaje` es inferido como `string`
En estos ejemplos, el compilador de C# infiere automáticamente que numero
es de tipo int
y mensaje
es de tipo string
basándose en los valores iniciales asignados.
La deducción de tipo funciona incluso para tipos complejos, o para tipos devueltos por funciones.
// todo esto también funciona
var lista = new List<string>();
var miObjeto = MetodoQueDevuelveAlgo();
Uso de new()
para la instanciación
A partir de C# 10.0 podemos utilizar el operador simplificado new()
(en lugar de usar var
). De igual forma, incrementamos la concisión del código.
Person persona = new(); // llamara al constructor de Persona
Este enfoque es similar al uso combinado de var
, pero permite la declaración explícita del tipo inicializado, (lo cuál es preferido por algunos programadores).
Ejemplos Prácticos
Colecciones y LINQ
El uso de var
es común en operaciones con colecciones y consultas LINQ, donde los tipos pueden ser largos y difíciles de escribir manualmente.
var listaEnteros = new List<int> { 1, 2, 3, 4, 5 };
var resultado = listaEnteros.Where(n => n > 2); // `resultado` es inferido como `IEnumerable<int>`
Tipos Anónimos
El uso de var
es obligatorio cuando se trabaja con tipos anónimos, ya que no hay forma de declarar el tipo explícitamente.
var persona = new { Nombre = "Luis", Edad = 30 }; // `persona` es un tipo anónimo