A tanulmány a lambda kifejezések c # - az egészet, és a programozás

Lambda egy beépített küldötte bevezetett C # 3.0 nyelvet. Ez egy rövid bemutatót a névtelen módszer. Ez biztosítja szintaxis létrehozása és hívási funkciók. Bár a lambda kifejezés könnyebben használható, mint a névtelen módszereket, azok végrehajtása egy kicsit más. És a névtelen módszerek és lambda kifejezés lehetővé teszi, hogy meghatározza egy beágyazott végrehajtás módját, azonban a gyűrűs módszer kifejezetten előírja, hogy meghatározza a típusú paraméterek és visszatér a változó típusát a módszert. Lambda kifejezés használja a lehetőséget levezethető típusú C # 3.0, amely lehetővé teszi, hogy a fordító következtetni a változó típusát környezetének alapján.

Lambda kifejezés osztható paraméterek majd végrehajtható kódot, mint például:

Lambda kifejezés lehetővé teszi át funkcionál érvek a módszer hívást. Kezdjük egy egyszerű példát egy lambda kifejezés, amely visszaadja a páros számok a listából egészek.

Nézzük az első lambda kifejezés változóba Evens, láthatja, hogy néhány különbség a névtelen módszereket. Az első - a kód nem használható a kulcsszó küldöttet. A második - nem definiált paraméterek típusa és visszatért változó, mert a fordító következtet a típus alapján összefüggésben. Típusok meghatározása a meghatározása küldöttet. Ebben az esetben a visszaküldött változó típusa által meghatározott findAll kap a résztvevő fogadására paraméter int és visszatér egy logikai érték. Lambda kifejezés nélkül zárójelek, és a visszatérési típus a változó a legtömörebb módon, hogy képviselje egy névtelen módszert. Ha a paraméterek száma egyenlő eggyel, akkor nyugodtan elhagyhatjuk zárójelbe kell tenni a paraméter, ahogy az első lambda kifejezés. Bár a lambda kifejezés nem igényel explicit paraméterekkel, meg lehet határozni a paramétereket, nadrágtartó, és visszatér a változó típusát, amint az a második lambda kifejezés rendelt változó even2.

Használjon explicit int paraméter és vissza a változó típusát, általában arra az eljárás. A return utasítás nem fog működni, ha nem zárja be a végrehajtható kód zárójelben, tekintve, hogy teljesen megtárgyalása, amely kapcsolódik a módszert.

Egy másik helyen, hogy szükség zárójelben lambda kifejezés - ha szeretné használni a paramétert több kód blokkokat belül a lambda kifejezés az alábbiak szerint:

A tanulmány a lambda kifejezések c # - az egészet, és a programozás

A fenti példában, a kód zárójelek között, így használhatja a lehetőséget mindkét kifejezést. Anélkül, fogszabályozó fordítóprogram nem lennék képes felismerni az i változó.

Használhatja lambda kifejezéseket, ha a küldött nincsenek paraméterei. Ebben az esetben meg kell kérdezni egy pár üres zárójelek jelzi a módszer paraméterek nélkül. Az alábbiakban egy egyszerű példát mutat lambda paraméterek nélkül.

A tanulmány a lambda kifejezések c # - az egészet, és a programozás

C # 3.0 számát határozza meg az általános küldötteket, hogy hozzá lehet rendelni a lambda kifejezés helyett a var kulcsszó, logikusan levezethető típusát. Tekintsük a példát néhány általános küldöttek:

A fenti példában a három eltérő szórási módszerrel: ahol, orderby és válasszuk. Kiterjesztése módszer elfogad egy generikus ahol átruházni int paraméter és a logikus típus, aki a visszaküldött változó annak meghatározására, hogy egy adott elemet a nyomtatási sorrendjét. Táguló válasszuk metódus egy egész paramétert, és visszatér egy egész, de lehet vissza minden, amit szeretnénk átalakítani az eredmény -, mielőtt elküldik a nyomtatási sorrendjét. A bővülő módszer orderby elfogadott egy paramétert, és használják, hogy meghatározzák a egyenletesség vagy oddness. Alapján a válogatott eredményeit. Nehéz lenne, ha meg kellett határozniuk három különböző küldöttek minden lambda kifejezés. A bevezetés általános küldöttek C # 3.0 nagyon triviális rendelni a lambda kifejezés általános küldöttek és elküldi ezeket küldöttek kiterjesztése módszereket. Generic küldöttek nagyon kényelmes és segít elkerülni az írás általános átruházza, amely osztogattak a .NET 1.1 és a .NET 2.0 (mivel nem volt kész generikus küldöttek). Általános küldöttek 4 lehetővé teszi, hogy meghatározzuk a paramétereket és a visszakapott változó 1-es típusú, azonban az ilyen küldöttek:

Ha a módszer vagy megbízottja nem felel meg a feltételeknek, akkor kézzel kell állapítsa küldöttje, hogy veszi ezeket a paramétereket. Generic küldöttek általában kiterjed a legtöbb forgatókönyv, de abban az esetben, ha az nem felel meg az igényeinek, levelet küldött egyedi.

Vannak esetek, amikor levezethető típusú visszaadja az adatok típusát, hogy meg kell, hogy visszatérjen egy lambda kifejezés. Ezekben az esetekben, akkor egyértelműen meg kell határozni, hogy milyen típusú paraméter a lambda kifejezés. Például:

A fenti állítás vissza fordító hibát, mert a hasadási kettős eredetű típus valóban megduplázódik. Azonban rendelni a lambda kifejezés a küldöttnek visszatérési típus a változó. Ha valóban vissza akar térni a int módszerrel átalakítani a test a kifejezést int, hogy jelezze szándékát, az alábbiak szerint:

Lambda kifejezések kétfélék. Az első egy egyszerű kifejezés, hogy az összes kijelzők, és az csak a kifejezés. A második típusú lambda kifejezés egy blokk nyilatkozatok álló merevítők és a visszatérési típus. Írunk a lambda kifejezés mindkét formában, hogy a különbség:

Menjünk előre, és elemezni minden lambda kifejezés viszont. Az első lambda kifejezés egy egyszerű kifejezés, amely nem rendelkezik kezelő szerv, mivel nincs bevallásának és a zárójelek között, míg a második lambda kifejezés tartalmazza a szervezet az üzemeltető, mivel egy return utasítást, és a fogszabályozó. Bár mindkét kifejezés összeállítani delegálni előnye lambdas nélkül az üzemeltető szerv abban a tényben rejlik, hogy lehet alakítani egy kifejezést fát, ami egy adott gyártó használhatja létre saját végrehajtását. Mint LINQ to SQL, hogy átalakítja, az úgynevezett SQL kifejezésfa saját domain nyelv, és elküldi azt az adatbázist. Harmadik lambda kifejezés azt jelzi, a különbség egy lambda kifejezés egy meg nem nevezett módszert. A szépség ez az operátor, hogy könnyen alakulnak kifejezés, mivel a gyűrű módszer lehet alakítani csak egy küldöttet. Nos, ez a kifejezés lehet visszafordultam küldöttje összeállítása kifejezések a küldött az alábbi szintaxis használatával:

Utolsó lambda kifejezés kivételt dob, mert a fordító nem tudja konvertálni lambda kifejezés tartalmazza az operátor törzsébe, amint azt a tényt, hogy a kapcsos zárójelek, és térjen vissza az üzemeltető.

Bár tudod használni a lambda kifejezés generálni kifejezést fák, nincs semmi megállás, ha jobb, hogy saját kifejezést fa. Nézzünk egy példát: létrehozunk egy kifejezés fát az lambda kifejezés négyzet = x => x * x.

Kezdjük a kifejezés int típusú paraméter.

A következő lépés -, hogy megteremtse a test a lambda expressziós egy bináris kifejezés. A test áll egy szorzás egy és ugyanazon expressziós paramétert.

Az utolsó lépés -, hogy hozzon létre egy lambda kifejezés, amely összeköti a testet a paraméter az alábbiak szerint:

Az utolsó lépés átalakítja az expressziós egy küldött és küldötte végez az alábbiak szerint:

Create a kifejezést egy másik kifejezést

Veszel egy kifejezést fát, és módosítani, hogy hozzon létre egy másik kifejezése is. Ebben a példában, kezdjük egy lambda kifejezés x * x, majd változtassa meg a kifejezést, hozzátéve, hogy ez 2. Tekintsük a következő példát:

Kezdjük egy lambda kifejezés, amely visszaadja a tér (tér):

Ezután létrehoz egy új testület, a lambda kifejezés, a test az első lambda konstans és hozzáadjuk a 2, és hozzárendeli egy bináris kifejezést:

Bezárások és lambda kifejezéseket

Circuit - egy olyan fogalom vett funkcionális programozás. Méri és használ egy változó, amely kívül esik a lambda kifejezéseket. Ez azt jelenti, hogy tudod használni a lambda kifejezés deklarált változók körén kívül eső lambda kifejezések - segítségével elfog a változók kívül található a lambda kifejezés. Ez megvan a maga előnye, de ez problémát okozhat, mint a külső környezet lehet változtatni a változó értékét. Vegyünk egy példát lambda kifejezés adott áramkör.

A fenti példa egy változó mulitplyby belsejében a lambda expressziós, bár nyilvánítják hatályán kívül kifejezés. Ezt az elvet az úgynevezett változó elkülönítését. A háttérben, a C # fordító veszi az összes elfogott változók és lehetővé teszi számukra a generált osztályban. Ha a lambda kifejezéseket külső változókat, a szemétgyűjtő nem gyűjteni őket, és ők ott, amíg nem használja lambda kifejezéseket és a kifejezés nem hagy teret.

Vannak bizonyos korlátozással használható lambda kifejezéseket paraméter a kulcsszó ref ki. Ha a változó át a kulcsszó ref vagy, arra van szükség, hogy egyértelműen meg kell határozni, hogy milyen típusú paraméter, mert a fordító tudja következtetni a változó típusát. Amint az alábbi példa mutatja:

Megjegyezzük, hogy a fenti kódot kifejezetten megadva paraméter int típusú mindkét esetben ref ki. Ha kihagyja a típus paramétert, a fordító hibát generál.

Egy másik korlátja az a lambda, hogy nem tudja használni a params kulcsszót a típus paraméter a lambda kifejezés, akár kifejezetten az adott paraméter típusa vagy sem. Az alábbi kód nem fordul le, mert a paraméter definíció kulcsszó paramétereket:

Ezt a cikket felül a lambda kifejezésszintaktikai - felváltja a gyűrűs módszer. Azt is mondják, hogy egy lambda kifejezés különbözik az anonim módszerek típusa miatt következtetés és a képességüket, hogy könnyen átalakítható átruházza vagy expressziós fák. Vizsgáltuk korlátozás paraméterek lambda kifejezéseket, és hogyan kell írni egy kifejezést a semmiből, és összeállítja azt a követ és fordítva.

• Példák .NET kódot cryptology [forrás - 38,5 KB] [demo - 9.96 Kb] • A végrehajtási AES és a DES a C # [forrás - 35,7 KB] [demo - 13.1 KB] 1. Bevezetés Cryptology - szentelt terület biztonsági és titoktartási . Ez a terület magában foglalja számos titkosító mindenkinek.

Bevezetés Ez a cikk ismerteti az aszinkron módszer hívások és hogyan kell használni őket. Munka után a küldöttek, szálak és aszinkron hívás itt az ideje, hogy megosszák tudásukat a témában. Használjon kis lépést, és egy csomó példa. Általában akkor látható, hogyan hívjuk módszerek és.

Erre azért volt szükség, hogy hozzon létre egy olyan gép az aktuális termék. A termék egy projekt menedzsment eszköz, és ezért az a feladata elve alapján a felhasználói aktivitás átmenet egyik állapotból a másikba. Az is szükséges, hogy az állam gép lehet konfigurálni / az más.

Kapcsolódó cikkek