// ErrFlag o`zgaruvchisini xususiyatga aylantirish. using System; class FailSoftArray { int[] a; // asosiy massivga havola int len; // massiv uzunligi bool ErrFlag; // bu oxirgi operatsiya natijasini //ko'rsatuvchi xususiy o'zgaruvchi // Berilgan o`lchamda massiv yaratish public FailSoftArray(int size) { a = new int[size]; len = size; } // Faqat o'qish uchun Length xususiyati public int Length { get { return len; } } // Faqat o'qish uchun Error xususiyati. public bool Error { get { return ErrFlag; } } // FailSoftArray sinf uchun indeksator. public int this[int index] { // get aksessori. get { if (ok(index) ) { ErrFlag = falser; return a[index]; } else { ErrFlag = true; return 0; } } // set aksessori. set { if(ok(index)) { a[index] = value; ErrFlag = false; } else ErrFlag = true; } } // Indeks belgilangan chegaralarda bo'lsa, mantiqiy true qiymatni qaytarish. private bool ok(int index) { if(index >= 0 & index < Length) return true; return false; } } // Xatoliklardan xoli massivdan foydalanish. class FinalFSDemo { static void Main() { FailSoftArray fs = new FailSoftArray(5); // ИспользоватьсвойствоError. for(int i=0; i < fs.Length + 1; i++) { fs[i] = i*10; if(fs.Error) Console.WriteLine("Ошибкавиндексе" + i); } } } Errorxususiyatini yaratish FailSoftArraysinfida quyidagi ikkita o'zgarishga sabab bo'ldi. Birinchidan, ErrFlagyopiq o'zgaruvchi bo`ldi, endi unga Errorxususiyati uchun asosiy saqlash joyi bo`lgani uchun to'g'ridan-to'g'ri murojaat qilib bo`lmaydi. Ikkinchidan, "faqat o'qish uchun" Error xususiyati kiritildi. Endi Errorxususiyati dasturda xatolarni aniqlashni tashkil qilishga javob beradi. U yuqoridagi Main()metodida ataylab massiv chegarasini buzilgandagi xatolarni ko`rsatar edi, endi Errorxususiyati bu xatolarni aniqlash uchun ishlatiladi. C# 3.0 versiyasidan boshlab, xususiyatlar boshqaradigan o'zgaruvchini aniqlamasdan, oddiy xususiyatlarni qo'llash imkoniyati paydo bo'ldi. Buning o'rniga, xususiyat uchun asosiy o`zgaruvchi avtomatik ravishda komplyator tomonidan beriladi. Ushbu xususiyat avtomatik ravishda amalga oshiriladi va quyidagi umumiy shaklni oladi: tip nom { get; set; } tipxususiyatning aniq tipini bildiradi, nom — xususiyatga tayinlangan nom. Shuni esda saqlash kerakki, getva setaksessorlarning belgilaridan keyin darhol nuqta-vergul qo`yiladi va ularning tanasi mavjud emas. Bunday sintaksis kompilyatorga avtomatik ravishda qiymat saqlashni qo'llab-quvvatlovchi maydondeb o`zgaruvchini yaratishni belgilanadi. Bunday o`zgaruvchiga to'g'ridan-to'g'ri murofaat mavjud emas va uning nom yo'q. Lekin ayni paytda undan xususiyat orqali foydalanish mumkin.