Compartir a través de


Cómo usar variables y matrices locales tipadas implícitamente en una expresión de consulta (Guía de programación de C#)

Puede usar variables locales con tipo implícito siempre que desee que el compilador determine el tipo de una variable local. Debe usar variables locales con tipo implícito para almacenar tipos anónimos, que a menudo se usan en expresiones de consulta. En los ejemplos siguientes se muestran los usos opcionales y necesarios de variables locales tipadas implícitamente en las consultas.

Las variables locales con tipo implícito se declaran mediante la palabra clave contextual var . Para obtener más información, vea Variables locales con tipo implícito y matrices con tipo implícito.

Examples

En el ejemplo siguiente se muestra un escenario común en el que se requiere la var palabra clave : una expresión de consulta que genera una secuencia de tipos anónimos. En este escenario, tanto la variable de consulta como la variable de iteración de la foreach instrucción deben escribirse implícitamente mediante var porque no tiene acceso a un nombre de tipo para el tipo anónimo. Para obtener más información sobre los tipos anónimos, vea Tipos anónimos.

private static void QueryNames(char firstLetter)
{
    // Create the query. Use of var is required because
    // the query produces a sequence of anonymous types:
    // System.Collections.Generic.IEnumerable<????>.
    var studentQuery =
        from student in students
        where student.FirstName[0] == firstLetter
        select new { student.FirstName, student.LastName };

    // Execute the query and display the results.
    foreach (var anonType in studentQuery)
    {
        Console.WriteLine("First = {0}, Last = {1}", anonType.FirstName, anonType.LastName);
    }
}

En el ejemplo siguiente se usa la var palabra clave en una situación similar, pero en la que el uso de var es opcional. Dado que student.LastName es una cadena, la ejecución de la consulta devuelve una secuencia de cadenas. Por lo tanto, el tipo de queryId podría declararse como System.Collections.Generic.IEnumerable<string> en lugar de var. La palabra clave var se usa para mayor comodidad. En el ejemplo, la variable de iteración de la foreach instrucción se escribe explícitamente como una cadena, pero en su lugar podría declararse mediante var. Dado que el tipo de la variable de iteración no es un tipo anónimo, el uso de var es una opción, no un requisito. Recuerde que var sí mismo no es un tipo, sino una instrucción para que el compilador infiere y asigne el tipo.

// Variable queryId could be declared by using
// System.Collections.Generic.IEnumerable<string>
// instead of var.
var queryId =
    from student in students
    where student.Id > 111
    select student.LastName;

// Variable str could be declared by using var instead of string.
foreach (string str in queryId)
{
    Console.WriteLine($"Last name: {str}");
}

Consulte también