Megosztás a következőn keresztül:


Lambda kifejezés (=>) operátor definiál egy lambda kifejezést

A => jogkivonat két formában támogatott: lambda operátorként , tagnév elválasztójaként és tagmegvalósításként egy kifejezés törzsdefiníciójában.

Lambda operátor

A lambda kifejezésekben a lambda operátor => elkülöníti a bal oldalon lévő bemeneti paramétereket a jobb oldalon lévő lambda törzstől.

Az alábbi példa a LINQ funkciót használja metódusszintaxissal a lambda kifejezések használatának szemléltetésére:

string[] words = { "bot", "apple", "apricot" };
int minimalLength = words
  .Where(w => w.StartsWith("a"))
  .Min(w => w.Length);
Console.WriteLine(minimalLength);   // output: 5

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (interim, next) => interim * next);
Console.WriteLine(product);   // output: 280

A lambda kifejezés bemeneti paraméterei a fordításkor erősen be vannak adva. Ha a fordító ki tudja következtetni a bemeneti paraméterek típusait, például az előző példában, kihagyhatja a típusdeklarációkat. Ha meg kell adnia a bemeneti paraméterek típusát, ezt minden paraméter esetében meg kell tennie, ahogy az alábbi példa mutatja:

int[] numbers = { 4, 7, 10 };
int product = numbers.Aggregate(1, (int interim, int next) => interim * next);
Console.WriteLine(product);   // output: 280

Az alábbi példa bemutatja, hogyan definiálhat lambdakifejezést bemeneti paraméterek nélkül:

Func<string> greet = () => "Hello, World!";
Console.WriteLine(greet());

További információ: Lambda-kifejezések.

Kifejezéstörzs definíciója

A kifejezéstörzs definíciója a következő általános szintaxist tartalmazza:

member => expression;

ahol expression érvényes kifejezés. A visszatérési típusnak expression implicit módon konvertálhatónak kell lennie a tag visszatérési típusára. Ha a tag:

  • Visszatérési típussal rendelkezik void , vagy
  • A következő:
    • Konstruktor
    • Finalizer
    • Tulajdonság vagy indexelő tartozék set

expressionutasításkifejezésnek kell lennie. Mivel a kifejezés eredménye elvetve van, a kifejezés visszatérési típusa bármilyen típusú lehet.

Az alábbi példa egy metódus kifejezéstörzs-definícióját Person.ToString mutatja be:

public override string ToString() => $"{fname} {lname}".Trim();

Ez a következő metódusdefiníció rövidített verziója:

public override string ToString()
{
   return $"{fname} {lname}".Trim();
}

Létrehozhat kifejezéstörzs-definíciókat metódusokhoz, operátorokhoz, írásvédett tulajdonságokhoz, konstruktorokhoz, véglegesítőkhöz, valamint tulajdonság- és indexelő-tartozékokhoz. További információ: Kifejezéssel testesített tagok.

Operátorok túlterhelése

Az => operátor nem terhelhető túl.

C# nyelvspecifikáció

A lambda operátorral kapcsolatos további információkért lásd a C# nyelv specifikációjának Névtelen függvénykifejezések szakaszát.

Lásd még