Delegaatit ja lambdat
Ymmärrä delegaatit ja lambda-lausekkeet tiiviin ja joustavan koodin kirjoittamiseksi
Delegaatit ja lambdat on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/5. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 5 oppituntia.
Lambda-lausekkeiden käyttäminen delegaattien kanssa
Lambda-lausekkeita voidaan määrittää suoraan delegaateille. Esimerkki:

Mikä delegaatti on
Delegaatti on tyyppi, joka sisältää viittauksia tietyn allekirjoituksen omaaviin metodeihin. Delegaatit mahdollistavat metodien välittämisen parametreina tai niiden määrittämisen dynaamisesti.
Esimerkki: Delegaatteja käytetään usein takaisinkutsuihin ja tapahtumien käsittelyyn.
Delegaattien määrittäminen ja käyttäminen
Voit määrittää delegaatin käyttämällä delegate-avainsanaa. Esimerkki:
Keskeinen asia: Delegaatit tarjoavat tavan kapseloida metodeja.
using System;
class Program {
// Define a delegate
public delegate void PrintDelegate(string message);
static void Main() {
PrintDelegate print = PrintMessage; // Assign method to delegate
print("Hello, Delegates!"); // Call the method via the delegate
}
static void PrintMessage(string message) {
Console.WriteLine(message);
}
}
Mikä lambda-lauseke on
Lambda-lauseke on tiivis tapa esittää nimetön metodi C#:ssa. Se käyttää syntaksia (parameters) => expression.
Esimerkki: (x, y) => x + y edustaa metodia, joka laskee yhteen kaksi lukua.
Vinkki: Lambda-lausekkeita käytetään usein LINQ:n ja delegaattien kanssa koodin tiiviyden ja selkeyden vuoksi.
Lambda-lausekkeet delegaattien kanssa
Lambda-lausekkeiden käyttäminen delegaattien kanssa
Lambda-lausekkeita voidaan määrittää suoraan delegaateille. Esimerkki:
Keskeinen asia: Lambda-lausekkeet tekevät koodista tiiviimpää ja helpommin luettavaa.
using System;
class Program {
public delegate int MathOperation(int x, int y);
static void Main() {
MathOperation add = (x, y) => x + y; // Lambda for addition
Console.WriteLine("Result: " + add(10, 20)); // Outputs: Result: 30
}
}
Monilähetysdelegaatit
Yksi delegaatti voi viitata useisiin metodeihin. Kaikki metodit kutsutaan järjestyksessä. Esimerkki:
using System;
class Program {
public delegate void Notify(string message);
static void Main() {
Notify notify = PrintMessage;
notify += LogMessage;
notify("Hello, Multicast Delegates!"); // Calls both methods
}
static void PrintMessage(string message) {
Console.WriteLine("Print: " + message);
}
static void LogMessage(string message) {
Console.WriteLine("Log: " + message);
}
}
Harjoitustehtävä
Luo ohjelma, joka käyttää StringOperation-delegaattia merkkijonojen käsittelyyn, esimerkiksi muuntamiseen isoiksi kirjaimiksi ja merkkijonon kääntämiseen. Esimerkki:
using System;
class Program {
public delegate string StringOperation(string input);
static void Main() {
StringOperation operations = ToUpperCase;
operations += ReverseString;
string input = "Hello";
foreach (var operation in operations.GetInvocationList()) {
Console.WriteLine(((StringOperation)operation)(input));
}
}
static string ToUpperCase(string input) {
return input.ToUpper();
}
static string ReverseString(string input) {
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
}
Delegaattien ja lambda-lausekkeiden parhaat käytännöt
Tässä on muutamia parhaita käytäntöjä:
- Käytä delegaatteja takaisinkutsujen ja tapahtumien käsittelyn toteuttamiseen.
- Suosi lambda-lausekkeita tiiviin ja selkeän koodin kirjoittamiseen.
- Yhdistä lambda-lausekkeet LINQ:n kanssa tehokkaaseen tietojen käsittelyyn.
- Vältä liian monimutkaisia lambda-lausekkeita koodin luettavuuden säilyttämiseksi.
Vinkki: Käytä lambda-lausekkeissa merkityksellisiä parametrien nimiä koodin selkeyden parantamiseksi.
Hienoa työtä!
Onnittelut! Olet oppinut käyttämään delegaatteja ja lambda-lausekkeita funktionaalisen ja tapahtumapohjaisen koodin kirjoittamiseen C#:ssa. Seuraavassa oppitunnissa tutustumme C#:n reflektioon, joka on tehokas ominaisuus tyyppien analysointiin suorituksen aikana. Jatketaan koodaamista!

Opi C# tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 93
- Oppitunnit
- 346
Usein kysytyt kysymykset
Onko oppitunti ”Delegaatit ja lambdat” ilmainen?
Kyllä – oppitunnin ”Delegaatit ja lambdat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 5 oppituntia.
Mitä opin oppitunnilla ”Delegaatit ja lambdat”?
Ymmärrä delegaatit ja lambda-lausekkeet tiiviin ja joustavan koodin kirjoittamiseksi Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/5.
Kuinka kauan ”Delegaatit ja lambdat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?
Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Geneeriset tyypit C#:ssa
- Async ja await: asynkronisen koodin käsittely
- Säikeistyksen ja tehtävien ymmärtäminen
- Delegaatit ja lambdat
- Reflektion ymmärtäminen C#:ssa