public int this[double idx] { // get aksessori. get { int index; // Eng yaqin butunga aylantirish. if( (idx - (int) idx) < 0.5) index = (int) idx; else, index = (int) idx + 1; if(ok(index)) { ErrFlag = false; return a[index]; } else { ErrFlag = true; return 0; } } // set aksessori. set { int index; // Eng yaqin butunga aylantirish. if( (idx - (int) idx) < 0.5) index = (int) idx; else index = (int) idx + 1; if(ok(index)) { a[index] = value; ErrFlag = false; } else ErrFlag = true; } } // Indeks belgilangan chegaralarda bo'lsa, true mantiqiy qiymatini qaytarish. private bool ok(int index) { if(index >= 0 & index < Length) return true; return false; } } // Xatoliklardan xoli massivdan foydalanish. class FSDemo { static void Main() { FailSoftArray fs = new FailSoftArrayE) ; // fs massivi qiymatlarini to`ldirish. for(int i=0; i < fs.Length; i++) fs[i] = i; // Endi massivga murojaat qilish uchun //int va double tipli indekslardan foydalaning. Console.WriteLine("fs[l]: " + fs[l]); Console.WriteLine("fs[2]: " + fs[2]); Console.WriteLine("fs[l.l]: " + fs[l.l]); Console.WriteLine("fs[1.6]: " + fs[1.6]); } } Ushbu dasturni bajarilganda quyidagi natijalar olinadi. fs[1] : 1 fs[2]: 2 fs[1.1] : 1 fs[1.6] : 2 Yuqoridagi natija shuni ko'rsatadiki, double tipli indekslar eng yaqin butun qiymatga yaxlitlanadi. Xususan, 1.1 indeksi 1ga yaxlitlandi va 1.6 indeksi 2ga. Yuqorida keltirilgan dastur indeksatorlarni qayta yuklash mumkinligini aniq ko'rsatib turibdi, ammo amalda u kamdan-kam hollarda qo'llaniladi. Odatda, buning uchun qayta yuklangan indeksatorlardan sinf ob'ektini muayyan indeks sifatida ishlatishda foydalaniladi.
3. Avtomatik ravishda amalga oshiriladigan xususiyatlar.
Avtomatik ravishda amalga oshiriladigan xususiyatlar.
Sinf a'zosining yana bir turi xususiyatdir. Odatda, xususiyat maydonni unga kirish usullari bilan birlashtiradi. Yuqorida keltirilgan misollarda ko'rsatilgandek, maydon ko'pincha ob'ekt foydalanuvchilari uchun mavjud bo'lish uchun yaratiladi, ammo bu sohada ruxsat etilgan operatsiyalar ustidan nazoratni saqlab qolish maqsadga muvofiqdir, masalan, ushbu sohaga tayinlangan qiymatlar oralig'ini cheklash. Bu maqsadga albatta yopiq o'zgaruvchining kirish usullari bilan erishish mumkin, ammo xususiyat bu maqsadga erishishning yanada mukammal va samaraliroq yo'lni ta'minlaydi. Xususiyatlar indeksatorlarga juda o'xshash. Xususiyat aynan getva setaksessorlaridan iborat. Aksessuarlar o'zgaruvchiga qiymat olish va o'rnatish uchun xizmat qiladi. Xususiyatning asosiy afzalligi shundaki, uning nomiga odatiy o'zgaruvchining nomiga o'xshash so'zlarni tayinlash orqali operatorlar va ifodalarda fordalanish mumkin va xususiyatlarga murojaat qilganda, uning getva setaksessorlari avtomatik ravishda chaqiriladi. Xuddi shunday, get va set indeksatorlarda ham ishlatiladi.