C# Academy · Oppitunti

Delegaatit ja lambdat

Ymmärrä delegaatit ja lambda-lausekkeet tiiviin ja joustavan koodin kirjoittamiseksi

Oppitunti 4/510 vaihetta

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:

Delegaatit ja lambdat — kuvitus 1

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!

Delegaatit ja lambdat — kuvitus 10
Aloita maksutta

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

  1. Geneeriset tyypit C#:ssa
  2. Async ja await: asynkronisen koodin käsittely
  3. Säikeistyksen ja tehtävien ymmärtäminen
  4. Delegaatit ja lambdat
  5. Reflektion ymmärtäminen C#:ssa
← Takaisin: C# Academy