2. 2§. Indeksatorning turi va uning parametrlari turlari haqida
I.BOB. Indeksatorlar haqida umumiy ma’lumot va uning xossalari
Download 0.67 Mb.
|
19.08 A Tojiyeva Saboxon Dasturlash kurs ishi
- Bu sahifa navigatsiya:
- IEmployee
I.BOB. Indeksatorlar haqida umumiy ma’lumot va uning xossalari.
1.1§. Indeksator haqida umumiy ma’lumot. Indeksator uchun indeksatorlar e'lon qilinishi mumkin . Interfeys indeksatorlarining kiruvchilar sinf indeksatorlarining kiruvchilaridan quyidagicha farq qiladi: Interfeysga kiruvchi vositalar modifikatorlardan foydalanmaydi. Interfeysga kirish moslamasi odatda tanaga ega emas. Accessor usullari indeksator o'qish / yozish, faqat o'qish yoki yozish uchun ishlatilishini ko'rsatishi kerak. Siz interfeysda aniqlangan indeksator uchun dasturni taqdim etishingiz mumkin, ammo bu kamdan-kam hollarda bo'ladi. Indeksatorlar odatda ma'lumotlar maydonlariga kirish uchun API-ni belgilaydilar va ma'lumotlar maydonlarini interfeysda aniqlab bo'lmaydi. Interfeys uchun indeksator yordamchisining namunasi quyida keltirilgan: C # da ko‘rinishi public interface ISomeInterface { //... // Indexer declaration: string this[int index] { get; set; } } Indeksatorning imzosi bir xil interfeysda e'lon qilingan boshqa indeksatorlarning imzolaridan farq qilishi kerak. Misol.Quyidagi misol interfeys indeksatorlarining bajarilishini namoyish etadi.C # // Indexer on an interface: public interface IIndexInterface { // Indexer declaration: int this[int index] { get; set; } } // Implementing the interface. class IndexerClass : IIndexInterface { private int[] arr = new int[100]; public int this[int index] // indexer declaration { // The arr object will throw IndexOutOfRange exception. get => arr[index]; set => arr[index] = value; } } C #Nusxalash IndexerClass test = new IndexerClass(); System.Random rand = new System.Random(); // Call the indexer to initialize its elements. for (int i = 0; i < 10; i++) { test[i] = rand.Next(); } for (int i = 0; i < 10; i++) { System.Console.WriteLine($"Element #{i} = {test[i]}"); } /* Sample output: /* Sample output: Element #0 = 360877544 Element #1 = 327058047 Element #2 = 1913480832 Element #3 = 1519039937 Element #4 = 601472233 Element #5 = 323352310 Element #6 = 1422639981 Element #7 = 1797892494 Element #8 = 875761049 Element #9 = 393083859 */ Yuqoridagi misolda interfeys a'zosining to'liq malakali nomidan foydalanib, interfeys a'zosini aniq amalga oshirishingiz mumkin. Misol C # ko‘rinishi string IIndexInterface.this[int index] { } Shu bilan birga, to'liq malakali ism, agar sinf bir xil indeksator imzosiga ega bo'lgan bir nechta interfeysni amalga oshirsa, demambigatsiya maqsadlari uchun talab qilinadi. Masalan, agar sinf ikkita interfeysni amalga oshirsa ( va ), ikkalasi ham bir xil imzo indeksator interfeysi a'zosiga ega bo'lsa, aniq bajarishni talab qiladi. Bu shuni anglatadiki, quyidagi indeksator deklaratsiyasi talab qilinadi: EmployeeICitizenIEmployee C # ko‘rinishi string IEmployee.this[int index] { } indeksatorni interfeysda amalga oshiradi IEmployee, shu bilan birga quyidagi deklaratsiya: C # ko‘rinishi string ICitizen.this[int index] { } interfeysda indeksatorni amalga oshiradi ICitizen. Download 0.67 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling