Compartilhar via


= > Operador (referência de C#)

O símbolo do operador => é chamado lambda.É usado em expressões lambda para separar as variáveis de entrada no lado esquerdo do corpo lambda no lado direito.Expressões Lambda são expressões embutidas semelhantes aos métodos anônimos mas mais flexíveis; são usados amplamente nas consultas LINQ que são expressas na sintaxe do método.Para obter mais informações, consulte Expressões lambda (guia de programação do C#).

O exemplo a seguir mostra duas maneiras para localizar e exibir o comprimento da cadeia de caracteres mais curta em uma matriz de cadeias de caracteres.A primeira parte do exemplo aplica um expressão lambda (w => w.Length) para cada elemento da matriz de words e usa o método de Min para localizar o comprimento o menor.Para comparação, a segunda parte do exemplo mostra uma solução mais longa que sintaxe de pesquisa do usa para fazer a mesma coisa.

string[] words = { "cherry", "apple", "blueberry" };

// Use method syntax to apply a lambda expression to each element
// of the words array. 
int shortestWordLength = words.Min(w => w.Length);
Console.WriteLine(shortestWordLength);

// Compare the following code that uses query syntax.
// Get the lengths of each word in the words array.
var query = from w in words
            select w.Length;
// Apply the Min method to execute the query and get the shortest length.
int shortestWordLength2 = query.Min();
Console.WriteLine(shortestWordLength2);

// Output: 
// 5
// 5

Comentários

O operador de => tem a mesma precedência que o operador de atribuição (=) e é mostrado associativo.

Você pode especificar o tipo da variável de entrada ou explicitamente permitir que o compilador inferir-lo; em ambos os casos, a variável é fortemente tipada em tempo de compilação.Quando você especifica um tipo, você deve incluir o nome do tipo e o nome de variável entre parênteses, como mostra o exemplo a seguir.

int shortestWordLength = words.Min((string w) => w.Length);

Exemplo

O exemplo a seguir mostra como escrever uma expressão lambda para a sobrecarga de Enumerable.Where padrão de operador de consulta que leva dois argumentos.Porque a expressão lambda tem mais de um parâmetro, os parâmetros devem ser colocados entre parênteses.O segundo parâmetro, index, representa o índice do elemento atual na coleção.A expressão de Where retorna todas as cadeias de caracteres cujos comprimentos é menor que as posições de índice na matriz.

static void Main(string[] args)
{
    string[] digits = { "zero", "one", "two", "three", "four", "five", 
            "six", "seven", "eight", "nine" };

    Console.WriteLine("Example that uses a lambda expression:");
    var shortDigits = digits.Where((digit, index) => digit.Length < index);
    foreach (var sD in shortDigits)
    {
        Console.WriteLine(sD);
    }

    // Compare the following code, which arrives at the same list of short
    // digits but takes more work to get there.
    Console.WriteLine("\nExample that uses a for loop:");
    List<string> shortDigits2 = new List<string>();
    for (var i = 0; i < digits.Length; i++)
    {
        if (digits[i].Length < i)
            shortDigits2.Add(digits[i]);
    }

    foreach (var d in shortDigits2)
    {
        Console.WriteLine(d);
    }
    // Output:
    // Example that uses a lambda expression:
    // five
    // six
    // seven
    // eight
    // nine

    // Example that uses a for loop:
    // five
    // six
    // seven
    // eight
    // nine
}

Consulte também

Referência

Expressões lambda (guia de programação do C#)

Conceitos

Guia de programação do C#

Outros recursos

Referência de C#