Nuqta uchun X va Y qiymatlarini 0 ga to’g’ridan to’g’ri o’rnatish ham mumkin, chunki chaqiruvchi kod faqat sonli ma’lumotlarni taqdim etadi deb havfsiz tartibda oldindan aytish mumkin. Biroq default sintaksisini ishlatish umumlashgan toifaning moslashuvchanligini oshiradi. Endi Nuqta toifasi metodlarini quyidagicha qo’llash mumkin:
static void Main(string[] args)
{ Console.WriteLine ("***** Umumlashgan strukturani ishlatish *****\n");
// Toifasi int koordinatalarga ega nuqta
Nuqta p = new Nuqta (10, 10);
Console.WriteLine ( "p.ToString ()={ 0} ”, p.ToString() ) ;
p.ResetNuqta();
Console.WriteLine("p.ToString()={0}", p.ToString());
Console.WriteLine();
// Toifasi double koordinatalarga ega nuqta
Nuqta p2 = new Nuqta(5.4, 3.3);
Console.WriteLine(”p2.ToString()={0}", p2.ToString());
p2.ResetNuqta ();
Console.WriteLine("p2.ToString() = {0}”, p2.ToString ());
Console.ReadLine();
}
Quyida bu dastur nimani chiqarishi keltirilgan:
***** Umumlashgan strukturani ishlatish *****
p.ToString() = [ 10, 10]
p.ToString() = [0, 0]
p2.ToString() = [5.4, 3.3]
p2.ToString() = [0, 0]
Toifa parametrlarini cheklash
Har qanday umumlashgan element kamida bitta toifa parametriga ega bo’ladi deb aytgan edik, uni mazkur umumlashgan toifa yoki uning a’zosi bilan ishlaganda ko’rsatish zarur bo’ladi. Shu holatning o’ziyoq toifalarga nisbatan havfsiz kod yaratishga imkon beradi; shunday bo’lsa ham, .NET platformasi alohida toifa parametriga maxsus talablarni qo’yish uchun where kalit so’zidan foydalanish imkonini beradi.
Bu where kalit so’zi yordamida muayyan toifa parametriga cheklovlar to’plamini qo’shish mumkin, ularni C# kompilyatori kompilyatsiya bosqichida tekshiradi. Xususan, toifa parametrini ushbu jadvalda ko’rsatilgandek cheklash mumkin.
Cheklov
|
Tavsifi
|
where T : struct
|
Toifa parametri o’z vorislik zanjirida System.ValueType sinfiga ega bo’lishi kerak (ya’ni struktura bo’lishi lozim)
|
where T : class
|
Toifa parametri o’z vorislik zanjirida System.ValueType sinfiga ega bo’lishi kerak (ya’ni ishoraviy toifa bo’lishi lozim)
|
where T : new ()
|
Toifa parametri standart konstruktorga ega bo’lishi kerak. Bu foydali, agarda umumlashgan toifa toifa parametrlarining nusxalarini yaratadigan bo’lsa, chunki maxsus konstruktorlarning formatini oldindan bilib bo’lmaydi. Ko’plab cheklovlarga ega bo’lgan toifa uchun bu cheklov eng oxirida ko’rsatilishiga e’tibor bering.
|
where T : BazaviySinfNomi
|
Toifa parametri BazaviySinfNomi deb ko’rsatilgan sinfning vorisi bo’lishi kerak
|
where Т : InterfeysNomi
|
Toifa parametri InterfeysNomi deb ko’rsatilgan interfeysni qo’llashi kerak. Vergullar bilan ajratilgan bir qancha interfeyslardan iborat ro’yhatni berish ham mumkin
|
Do'stlaringiz bilan baham: |