Respublikasi oliy va o’rta maxsus ta’lim vazirligi guliston davlat universiteti amaliy matematika va


Download 1.4 Mb.
bet23/57
Sana26.06.2023
Hajmi1.4 Mb.
#1655865
1   ...   19   20   21   22   23   24   25   26   ...   57
Bog'liq
portal.guldu.uz-Дастурлаш технологиялари

Umumlashtirilgan usullar


Umumiy sinflardan tashqari, umumiy parametrlarni xuddi shu tarzda ishlatadigan umumiy usullarni ham yaratishingiz mumkin. Masalan; misol uchun:


private static void Main(string[] args)


{
int x = 7; int y = 25;
Swap(ref x, ref y); // или так Swap(ref x, ref y); Console.WriteLine($"x={x} y={y}"); // x=25 y=7



s2);
string s1 = "hello"; string s2 = "bye";


Swap(ref s1, ref s2); // или так Swap(ref s1, ref

Console.WriteLine($"s1={s1} s2={s2}"); // s1=bye



s2=hello

Console.Read();


}
public static void Swap (ref T x, ref T y)

{
T temp = x; x = y;
y = temp;
}
}
Bu parametrlarni mos yozuvlar asosida qabul qiladigan va ularning qiymatlarini o'zgartiradigan umumiy almashtirish usulini belgilaydi. Bunday holda, ushbu parametrlarning qaysi turini anglatishi muhim emas.

Asosiy usulda biz almashtirish usulini chaqiramiz, uni ma'lum bir tip bilan yozamiz va unga bir nechta qiymatlarni beramiz.




Savollar:


  1. Metod nima

  2. Umumlashgan metod nima

  3. Umumlashgan metodlarning avzalliklari.



3-Mavzu: Umumlashgan delegatlar.


Reja:

  1. .NET da Delegatlar.

  2. Umumlashgan delegatlar.

Usullar singari, delegatlar ham umumiy bo'lishi mumkin. Quyida umumiy delegatni e'lon qilishning umumiy shakli keltirilgan:


Tur parametrlari ro'yxati joylashgan joyiga e'tibor bering. U darhol delegat nomidan kelib chiqadi. Umumiy delegatlarning afzalligi shundan iboratki, ular yozilgan umumiy shaklda aniqlanishi mumkin, keyinchalik ularni har qanday mos keladigan usul bilan moslashtirish mumkin.


Umumiy delegatlar xavfsiz usulda chaqiriladigan usulni belgilashning yanada moslashuvchan usulini taklif qilishadi. General.dan oldin (.NET 2.0 da) xuddi shu yakuniy natijaga System.Object parametri yordamida erishish mumkin edi:


public delegate void MyDelegate(object arg);


Bu sizga vakilning maqsadiga biron bir dalillarni yuborishga imkon beradigan bo'lsa-da, u tipdagi xavfsizlikni ta'minlamaydi va boks / qutidan olib tashlash zaruratini bartaraf etmaydi. Keling, umumiy delegatlarni ishlatish misolini ko'rib chiqaylik:


using System;


namespace ConsoleApplication1


{
// Создадим обобщенный делегат delegate T MyDel (T obj1, T obj2);

class MySum


{
public static int SumInt(int a, int b)
{
return a + b;
}

public static string SumStr(string s1, string s2)


{
return s1 + " " + s2;
}

public static char SumCh(char a, char b)


{
return (char)(a + b);
}
}

class Program


{
static void Main()
{
// Реализуем несколько методов обобщенного делегата MyDel del1 = MySum.SumInt; Console.WriteLine("6 + 7 = " + del1(6,7));

MyDel del2 = MySum.SumStr; Console.WriteLine("\"Отличная\" + \"погода\" = " +


del2("Отличная","погода"));

MyDel del3 = MySum.SumCh; Console.WriteLine("'a' + 'c' = " + del3('a','c'));


Console.ReadLine();


}
}
}

Deylik, c # delegatini yaratishda biz uni yanada universalroq yoki aniqroq umumlashtirmoqchimiz!





Download 1.4 Mb.

Do'stlaringiz bilan baham:
1   ...   19   20   21   22   23   24   25   26   ...   57




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling