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
expression
utasí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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: