Saltar al contenido

¿Cuáles son algunas de las ventajas y desventajas de la inferencia de tipos en C#?

Iván, parte de este equipo, nos hizo el favor de crear este enunciado ya que conoce muy bien dicho tema.

Solución:

La inferencia de tipos se inventó exactamente por la razón que usted da para C++, puede crear tipos anónimos que NO TIENEN un nombre de tipo (consulte Lambdas y Linq en particular).

Así que en ese caso es necesario.

En el otro caso (cuando se conoce el nombre del tipo), todo se reduce al estilo. yo suelo var cuando el tipo es realmente obvio:

// I like this - less duplication and easier to read
var item = new List();

en vez de:

List item = new List();

Porque reduce la duplicación.

Sin embargo, prefiero no usarlo cuando el tipo no es inmediatamente obvio para el lector:

// I don't like this - I need to look up what the type is
var item = ResultOfSomeFunctionWhereICantSeeWhatItIs();

Pero su millaje puede variar.

La tipificación implícita puede ser útil en algunos casos y dañina en otros. Eric Lippert publicó recientemente un artículo sobre los usos y abusos de la escritura implícita que vale la pena leer.

Una cosa para recordar, var es solo para el usuario, el compilador lo convierte a su representación concreta al compilar.

La única desventaja es cuando se usan interfaces de una clase.

asumiendo que GetCurrentList() devuelve un IList:

IEnumerable list = GetCurrentList();

y

var list = GetCurrentList();

no son los mismos que en el segundo ejemplo, la lista será un IList.

Tiendo a escribir de forma explícita y, por lo general, solo uso var cuándo ayudará a la legibilidad del código y cuándo usar tipos anónimos (porque tiene que hacerlo en ese momento).

Creo que el sentido común dicta las siguientes reglas informales:

Si hay algún nombre largo como:

Lazy> myVar = new Lazy>();

luego reemplazándolo con

var myVar = new Lazy>();

tiene sentido porque todavía se puede saber qué es el objeto.

Algo ambiguo, por otro lado, podría justificar no usar var:

Lazy> myVar = doProcess();

Te mostramos las comentarios y valoraciones de los lectores

Eres capaz de sustentar nuestra publicación mostrando un comentario o puntuándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *