Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] [C#] [Consulta] ¿Variables var?

Estas en el tema de [C#] [Consulta] ¿Variables var? en el foro de .NET en Foros del Web. Buenas, Estoy indeciso con la definición de variables en C# ya que puedo definir las variables según el tipo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C#: Ver original ...
  #1 (permalink)  
Antiguo 03/09/2015, 05:30
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 11 años
Puntos: 1
[C#] [Consulta] ¿Variables var?

Buenas,

Estoy indeciso con la definición de variables en C# ya que puedo definir las variables según el tipo:

Código C#:
Ver original
  1. string
  2. int
  3. bool
  4. double
  5. decimal

Pero también está:

Código C#:
Ver original
  1. var

Con var se puede definir las variables sin declararle su valor, osea que detecta el tipo de variable por si solo.

Por lo que me gustaría saber cual es más recomendable usar y en que casos.

Cualquier información adicional lo agradecería.

Saludos.
  #2 (permalink)  
Antiguo 03/09/2015, 12:32
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 11 meses
Puntos: 52
Respuesta: [C#] [Consulta] ¿Variables var?

Como te había comentado, el keyword "var" en C# es una característica opcional y queda a "gusto" del desarrollador o equipo la opción de usarlo o no.

Personalmente, yo uso var en todos lados, sobre todo cuando es inmediatamente obvio el tipo de la variable, como en el caso de instanciar usando new():

Código C#:
Ver original
  1. var dict = new Dictionary<string, object>();

es mucho menos tedioso que repetir el tipo 2 veces:

Código C#:
Ver original
  1. Dictionary<string, object> dict = new Dictionary<string, object>();

ámbas instrucciones hacen exactamente lo mismo, pero la primera es mas breve y menos tediosa, tanto para leer como para escribir.

Otro caso donde prefiero muchísimo usar var es cuando realmente no me interesa cuál es el tipo de objeto que me devuelve algo:

Código C#:
Ver original
  1. var texto = "Hola Mundo, Este Texto Tiene Muchas Letras";
  2.  
  3. var palabrasPorLetra =
  4.         texto.Split(' ')
  5.              .GroupBy(x => x[0]);

en este caso, la variable palabrasPorLetra es de tipo
Código C#:
Ver original
  1. IEnumerable<IGrouping<Char,string>>
, pero eso me tiene totalmente sin cuidado ya que lo importante es que estoy agrupando las palabras por el primer caracter, y cualquiera que conozca C# entiende eso sin necesidad de ver el tipo de la variable.

En los casos donde resulta más discutible el uso de "var" es cuando no es tan obvio lo que devuelve un método:

Código C#:
Ver original
  1. var resultado = ProcesarDatos(datos);

qué tipo de objeto es resultado? puede resultar confuso para alguien que no conoce bien el código. Uno podría alegar que en realidad lo que hay que hacer es cambiar el nombre del método ProcesarDatos() por algo que indique qué cosa devuelve ese método, pero ahí entramos en el terreno de las opiniones y preferencias personales.

Lo divertido de los "coding styles" o estilos para escribir código es que cada persona tiene una opinión diferente, y todos tienen razón, e incluso si uno no la tiene, no importa, es cuestión de gustos.
Claro que todo esto es posible en lenguajes ricos y modernos como C# o F#, pero hay OTROS... lenguajes que son horrendos y no tienen ninguna de estas ventajas (por ejemplo uno que empieza con "J" y termina con "ava"), y leer y escribir en esos lenguajes resulta muy tedioso y estresante.

Última edición por agleiva; 03/09/2015 a las 12:52
  #3 (permalink)  
Antiguo 03/09/2015, 12:55
 
Fecha de Ingreso: enero-2013
Mensajes: 176
Antigüedad: 11 años, 11 meses
Puntos: 2
Respuesta: [C#] [Consulta] ¿Variables var?

Todo depende para que las utilices,

Yo suelo utilizar el tipo de dato que le corresponde al valor y de requerirse mas adeltante hago cast..

Cada tipo de dato tiene propiedades diferentes

En cambio yo defino una variable con "var" para consultas de LINQ o cuando uso servicios web...

Una diferencia entre declaracion de variables con los tipos de datos es que tiene propiedades particulares de tipo de dato aun sin que se inicialicen,

en cambio el tipo "var" no puedes definir sin inicializar..


Es cuestion de gustos, te recomiendo utilizar tipos de datos para tener un codigo mas controlado y mejor entendible...

Si solo tu tocaras ese codigo hazlo a tu gusto, si trabajas con un equipo de trabajo por favor consideren seguir nomenclaturas, reglas etc. para facilitar el desarrollo
__________________
Define tus intereses, se curioso, investiga, comete errores, aprende, practica, mejora, enseña y vuelve a comenzar....
  #4 (permalink)  
Antiguo 03/09/2015, 12:59
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 11 meses
Puntos: 52
Respuesta: [C#] [Consulta] ¿Variables var?

Me faltó aclarar esto en mi comentario anterior:

el "var" de C# es inferencia de tipos y no tiene nada que ver con los lenguajes dinámicos. Una variable declarada con var en C# sigue siendo estáticamente tipada y su tipo es fijo durante toda la existencia de la misma.

El siguiente ejemplo es INVALIDO en C#:

Código C#:
Ver original
  1. var a = "hola soy un string";
  2. a = 5;

Este código NO COMPILA ya que a es de tipo string (para siempre) y no acepta el valor numérico 5.
  #5 (permalink)  
Antiguo 03/09/2015, 15:07
Avatar de Tropy  
Fecha de Ingreso: diciembre-2013
Mensajes: 62
Antigüedad: 11 años
Puntos: 1
Respuesta: [C#] [Consulta] ¿Variables var?

Gracias por las respuestas.
Me ha quedado todo claro.

Saludos.

Etiquetas: variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:28.