Sobes.tech
Junior

C# da delegat nima bo'lishi mumkin?

sobes.tech AI

AIdan javob

C# tilida delegat — bu ma'lum bir imzoga (qaytish turi va parametr turlari) ega metodlarga havolalarni ifodalovchi tur. U quyidagilarni o'z ichiga olishi mumkin:

  1. Statik metodga havola:
    // Statik metod
    public static void StaticMethod(int x) { }
    
    // Statik metodga havola qiluvchi delegat
    MyDelegate d = StaticMethod;
    
  2. Ob'ekt metodiga havola:
    // Ob'ekt bilan ishlaydigan sinf
    public class MyClass
    {
        public void InstanceMethod(int y) { }
    }
    
    // Sinfdan ob'ekt yaratish
    MyClass obj = new MyClass();
    
    // Ob'ekt metodiga havola qiluvchi delegat
    MyDelegate d = obj.InstanceMethod;
    
  3. Bir nechta metodlardan iborat chaqirish ro'yxati (invocation list): C# dagi delegat aslida ko'p manzilli. U bir nechta metodlarga havolalarni o'z ichiga olishi mumkin. Bunday delegat chaqirilganda, ro'yxatdagi barcha metodlar chaqiriladi va ularning qo'shilish tartibida bajariladi.
    public delegate void MyDelegate(int value);
    
    public static void Method1(int z) { }
    public static void Method2(int w) { }
    
    // Ko'p manzilli delegat yaratish
    MyDelegate multiDelegate = Method1;
    multiDelegate += Method2; // Ikkinchi metodni qo'shish
    
    // Delegatni chaqirish ikkala metodni ham chaqiradi
    multiDelegate(10);