C# tilida delegatlar, eventlar va LINQ juda muhim tushunchalar bo‘lib, ular kodni moslashuvchan, toza va o‘qilishi oson qiladi. Ushbu maqolada quyidagilarni ko‘rib chiqamiz:
- Delegatlar nima va qanday ishlatiladi
- Eventlar yordamida hodisalarni kuzatish
- LINQ yordamida ma’lumotlarni qulay tarzda qayta ishlash
🔹 Delegatlar
Delegat nima?
Delegat — bu metodni o‘zida saqlaydigan tip xavfsiz pointer.
- Boshqacha qilib aytganda, metodni parametr sifatida uzatish imkonini beradi.
- Delegatlar yordamida kodimiz modulyar va moslashuvchan bo‘ladi.
Misol:
// Delegat e’lon qilish public delegate void MyDelegate(string message); class Program { // Bu metod delegat orqali chaqiriladi static void PrintMessage(string msg) { Console.WriteLine("Xabar: " + msg); } static void Main() { // Delegatga metodni tayinlash MyDelegate del = PrintMessage; // Delegat orqali metodni chaqirish del("Salom, delegatlar!"); } } //1. Func (malumot qabul qiladi 1-16.., va qandaydir type qaytaradi)
//2. Action (malumot qabul qiladi, ammo qaytarmaydi)
//3. predicate (malumot qabul qiladi, va bool qaytaradi)
public class Program { delegate int MathOperation(int x, int y); private static void Main(string[] args) { // 1-step Func MathOperation add = Add; MathOperation subtract = Subtract; int result1=add(6,2); int result2=subtract(6,2); Console.WriteLine($"Add -{result1}:\n Subtract -{result2}"); //2-step Action Action<int, int> action = (x, y) => { int result3 = x + y; Console.WriteLine($"Sum:{result3}"); }; action(13, 87); //3-Predicate string input = "Hello Delegate"; if (IsValidInput(input, IsUpperCase)) { Console.WriteLine("The input is in uppercase"); } else { Console.WriteLine("The input is not in uppercase"); } } private static bool IsValidInput(string input, Predicate<string> validateRule) { return validateRule(input); } private static bool IsUpperCase(string input) { return input.Equals(input.ToUpper()); } private static int Add(int x, int y) { return x + y; } private static int Subtract(int x, int y) { return x - y; } } 🔹 Event nima?
Event (hodisa) — bu dasturda biror voqea sodir bo‘lganda xabar beruvchi mexanizm.
Masalan:
Tugma bosilganda
Sichqoncha harakat qilganda
Ma’lumot bazasida o‘zgarish bo‘lganda
Event aslida “signal” bo‘lib, dastur ichidagi boshqa joylarga:
👉 “Mana, hodisa bo‘ldi, xohlasa reaksiya qil” deb yuboradi.
Eventning asosiy qismlari
Event 3 asosiy qismdan iborat:
Publisher (E’lon qiluvchi)
Eventni yaratadigan va uni “sodir qiladigan” obyekt.
(Masalan, Button tugmasi)
Subscriber (Obuna bo‘luvchi)
Event sodir bo‘lganda unga javob beradigan metod(lar).
(Masalan, “Tugma bosilganda ‘Salom’ chiqarsin” degan metod)
Event handler (Ishlovchi)
Hodisaga javob sifatida bajariladigan kod.
Oddiy hayotiy misol
Do‘stingiz telefoningizga qo‘ng‘iroq qiladi → event sodir bo‘ldi.
Siz qo‘ng‘iroqqa javob berasiz → event handler ishga tushdi.
👉 Telefoningiz publisher, siz subscriber, sizning “Alo alik” deyishingiz esa event handler.
using System; class Program { // 1. Delegate tipi public delegate void MyEventHandler(string message); // 2. Event e’lon qilish public static event MyEventHandler OnMessage; static void Main() { // 3. Eventga obuna bo‘lish OnMessage += ShowMessage; OnMessage += ShowUpperCaseMessage; // 4. Eventni chaqirish OnMessage("Salom, Event ishladi!"); } // Event handler 1 static void ShowMessage(string msg) { Console.WriteLine("Oddiy: " + msg); } // Event handler 2 static void ShowUpperCaseMessage(string msg) { Console.WriteLine("Katta harflarda: " + msg.ToUpper()); } } // natija Oddiy: Salom, Event ishladi! Katta harflarda: SALOM, EVENT ISHLADI! 👉 Ko‘rib turibsiz, bitta event sodir bo‘ldi, unga ikkita metod obuna bo‘ldi va ikkalasi ham ishladi.
Xulosa
Eventlar dasturdagi obyektlar o‘rtasida aloqa o‘rnatishning eng qulay yo‘li hisoblanadi. Ular yordamida kodni aniq, modulga ajratilgan va boshqarilishi oson tarzda yozish mumkin.
Top comments (0)