0Pricing
C# Academy · Lekcja

Delegaty i lambdy

Poznaj delegaty i wyrażenia lambda, aby pisać zwięzły i elastyczny kod

Delegaty i lambdy to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 4 z 5. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 5 lekcji w sumie.

Używanie lambd z delegatami

Używanie lambd z delegatami

Wyrażenia lambda można bezpośrednio przypisywać do delegatów. Przykład:

Delegaty i lambdy — ilustracja 1

Czym jest delegat

Czym jest delegat?

Delegat to typ przechowujący odwołania do metod o określonej sygnaturze. Delegaty umożliwiają przekazywanie metod jako parametrów lub ich dynamiczne przypisywanie.

Przykład: Delegaty są często używane do obsługi wywołań zwrotnych i zdarzeń.

Definiowanie i używanie delegatów

Definiowanie i używanie delegatów

Delegat można zdefiniować za pomocą słowa kluczowego delegate. Przykład:

Najważniejsza informacja: Delegaty umożliwiają hermetyzowanie metod.

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);
    }
}

Czym jest wyrażenie lambda

Czym jest wyrażenie lambda?

Wyrażenie lambda to zwięzły sposób reprezentowania anonimowej metody w języku C#. Używa składni (parameters) => expression.

Przykład: (x, y) => x + y reprezentuje metodę dodającą dwie liczby.

Wskazówka: Lambdy są często używane z LINQ i delegatami, aby zwiększyć zwięzłość i czytelność kodu.

Wyrażenia lambda z delegatami

Używanie lambd z delegatami

Wyrażenia lambda można bezpośrednio przypisywać do delegatów. Przykład:

Najważniejsza informacja: Lambdy sprawiają, że kod jest bardziej zwięzły i czytelny.

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
    }
}

Delegaty multicast

Delegaty multicast

Pojedynczy delegat może odwoływać się do wielu metod. Wszystkie metody są wywoływane w kolejności. Przykład:

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);
    }
}

Zadanie praktyczne

Zadanie praktyczne

Proszę utworzyć program, który używa delegata StringOperation do wykonywania operacji na ciągach znaków, takich jak konwersja na wielkie litery i odwracanie ciągu. Przykład:

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);
    }
}

Najlepsze praktyki dotyczące delegatów i lambd

Najlepsze praktyki dotyczące delegatów i lambd

Oto kilka najlepszych praktyk:

  • Proszę używać delegatów do implementowania wywołań zwrotnych i obsługi zdarzeń.
  • W przypadku zwięzłego i czytelnego kodu proszę wybierać wyrażenia lambda.
  • Proszę łączyć lambdy z LINQ w celu wydajnego przetwarzania danych.
  • Proszę unikać nadmiernie złożonych lambd, aby zachować czytelność kodu.

Wskazówka: Proszę używać opisowych nazw parametrów w lambdach, aby zwiększyć czytelność kodu.

Świetna robota!

Świetna robota!

Gratulacje! Nauczyli się Państwo używać delegatów i wyrażeń lambda do pisania funkcyjnego oraz sterowanego zdarzeniami kodu w języku C#. W następnej lekcji poznają Państwo refleksję w języku C# — zaawansowaną funkcję służącą do analizowania typów w czasie wykonywania. Proszę kontynuować naukę programowania!

Delegaty i lambdy — ilustracja 10

Często zadawane pytania

Czy lekcja „Delegaty i lambdy” jest bezpłatna?

Tak — pełny tekst „Delegaty i lambdy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 5 lekcji w sumie.

Co nauczysz się w „Delegaty i lambdy”?

Poznaj delegaty i wyrażenia lambda, aby pisać zwięzły i elastyczny kod Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 5.

Ile czasu zajmuje lekcja „Delegaty i lambdy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Typy generyczne w C#
  2. Async i await: praca z kodem asynchronicznym
  3. Wątki i zadania
  4. Delegaty i lambdy
  5. Refleksja w C#
← Powrót do C# Academy