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:

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!

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
- Typy generyczne w C#
- Async i await: praca z kodem asynchronicznym
- Wątki i zadania
- Delegaty i lambdy
- Refleksja w C#