Ezzel a kifejezéssel én milyen típust adok át a függvénynek? C#
//Definíció
public static uint DarabSzam<TSource>(this IEnumerable<TSource> source);
És hogyan használhatom ezt lambdákkal amik ugye névtelen függvények.
Igazából azt nem értem,hogy ez hogyan lehetséges(A microsoft oldalán találtam a lambdáknál):
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
Itt a count függvénynek valójában mit adunk át paraméterül?
És hogyan írhatok én egy saját függvényt amiben én is át adhatok neki paraméterül kész kódot mint amilyen a count ban is van?
Hogy van ez az egész?
Arra vagyok kíváncsi,hogy ez hogyan valósul meg és hogyan lehetséges ez nem pedig arra,hogy mi kerül az oddnumbersba mert azt tudom.
De a count bemenő paramétere az egy IEnumerable interfrész aminek sablon paramtert is meg kell adni.
Lambdát ad átt neki és mégis jó mikor a counter az nem is lambdát vár hanem egy IEnumerable interfrészt.
Hogy van ez az egész össze vagyok zavarodva.
Amennyire nézem, bár még mindig nem vagyok C# szakértő, ez egy szinaktikai cukorka: az első paraméter a . előtt szereplő objektum, ami Array, ami IEnumerable. A második paraméter pedig a function.
Én nem értem ezt az egészet fenébe. :-(
Pedig tisztában vagyok az interfrészekkel ,sablonokkal stb de ez teljesen érthetetlen.
A link amit küldtél azon ott a Count deklarációja.
És az ahogy a példakódban használva van a count az teljesen rossz ha a deklarációt megnézzük.
Ennek a függvénynek sablon paramétereket is kell átt adni de ez a példakódban nincs.
Teljesen érthetetlen.
"És az ahogy a példakódban használva van a count az teljesen rossz ha a deklarációt megnézzük."
Nem rossz, csak egy hasznos C# nyelvi elemet használ: az Extension Methodot. Ennek lényege, hogy egy statikus osztályban a statikus metódusok úgy tudnak visekedni (szigorúan szintaktikai szempontból), mintha az eredeti osztály tagjai lennének. Függvény deklarálásának szintaxisa:
public static void DoSomething(this String thisString);
Ezek után - amennyiben a kérdéses statikus osztály forrásfájljának névterét látod - tetszőleges String objektumon meg tudod hívni a DoSomething() metódust (így, paraméterek nélkül, mert az objektum átadódik a "színfalak mögött" neki). Azaz lényegében ez is egy syntax sugar, én szerettem:)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!