Pregunta ¿Qué significa "var" en C #? [duplicar]


Posible duplicado:
Uso de la palabra clave var en C # 

En C #, ¿cómo funciona la palabra clave "var" ¿trabajo?


75
2017-11-29 19:54


origen


Respuestas:


Significa que el tipo del local que se declara será inferido por el compilador:

// This statement:
var foo = "bar";
// Is equivalent to this statement:
string foo = "bar";

Notablemente, var no define una variable como de tipo dinámico. Entonces esto NO es legal:

var foo = "bar";
foo = 1; // Compiler error, the foo variable holds strings, not ints

var tiene solo dos usos:

  1. Requiere menos tipeo para declarar variables, especialmente cuando se declara una variable como un tipo genérico anidado.
  2. Debe usarse cuando se almacena una referencia a un objeto de tipo anónimo, porque el nombre del tipo no se puede conocer de antemano: var foo = new { Bar = "bar" };

No puede utilizar var como el tipo de cualquier cosa menos locales. Entonces no puedes usar la palabra clave var para declarar los tipos de campo / propiedad / parámetro / retorno.


138
2017-11-29 19:56



Significa que el tipo de datos se deriva (implícito) del contexto.

De http://msdn.microsoft.com/en-us/library/bb383973.aspx

A partir de Visual C # 3.0, las variables   que están declarados en el alcance del método puede   tener un tipo implícito var. Un   la variable local implícitamente tipada es   fuertemente tipeado como si tuvieras   declaró el tipo usted mismo, pero el   el compilador determina el tipo. los   después de dos declaraciones de i son   funcionalmente equivalente:

var i = 10; // implicitly typed
int i = 10; //explicitly typed

var es útil para eliminar el tipeo del teclado y el ruido visual, por ejemplo,

MyReallyReallyLongClassName x = new MyReallyReallyLongClassName();

se convierte

var x = new MyReallyReallyLongClassName();

pero puede ser usado en exceso hasta el punto en que se sacrifica la legibilidad.


12
2017-11-29 19:55



"var" significa que el compilador determinará el tipo explícito de la variable, en función del uso. Por ejemplo,

var myVar = new Connection();

te daría una variable de tipo Conexión.


7
2017-11-29 19:56



¿Alguna vez odiaste escribir esos inicializadores variables?

XmlSerializer xmlSerializer = new XmlSerialzer(typeof(int))

Entonces, comenzando con C # 3.0, puedes reemplazarlo por

var xmlSerializer = new XmlSerialzer(typeof(int))

Un aviso: el tipo se resuelve durante la compilación, por lo que no hay problemas con el rendimiento. Pero el compilador debería ser capaz de detectar el tipo durante el paso de compilación, de modo que codifique como var xmlSerializer; no compilará en absoluto.


4
2017-11-29 20:05



Declara un tipo basado en lo que se le asigna en la inicialización.

Un ejemplo simple es que el código:

var i = 53;

Examinará el tipo de 53 y esencialmente reescribirá esto como:

int i = 53;

Tenga en cuenta que si bien podemos tener:

long i = 53;

Esto no sucederá con var. Aunque puede con:

var i = 53l; // i is now a long

Similar:

var i = null; // not allowed as type can't be inferred.
var j = (string) null; // allowed as the expression (string) null has both type and value.

Esto puede ser una conveniencia menor con tipos complicados. Es más importante con tipos anónimos:

var i = from x in SomeSource where x.Name.Length > 3 select new {x.ID, x.Name};
foreach(var j in i)
  Console.WriteLine(j.ID.ToString() + ":" + j.Name);

Aquí no hay otra forma de definir i y j que usar var ya que no hay nombre para los tipos que tienen.


4
2017-11-29 20:05