} } if (isprime) { val = i; break; } } return val; } public void Reset() { val = start; } public void SetStart(int x) { start = x; val = start; } } Qizig'i shundaki, ByTwosva Primesikkala sinfda ham bir xil interfeysni amalga oshiradilar, garchi ular butunlay boshqa sonlarni qatorini aniqlagan bo`lsalar ham. Yuqorida aytib o'tilganidek, interfeysda hech qanday dastur mavjud emas, shuning uchun har bir sinfda sinfning o'zi uchun zarur bo'lgan tarzda erkin qo'llanilishi mumkin.
2. Strukturalar.
Strukturalar.
Siz allaqachon ma`lum bo'lganidek, sinflar ma'lumot tiplatiga ishora qiladi. Bu shuni anglatadiki, muayyan sinf ob'ektlari to'g'ridan-to'g'ri mavjud bo'lgan oddiy tipdagi qiymatlardan farqli havola shaklida mavjud. Lekin ba'zan oddiy tipdagi qiymatlar sifatida ob'ektlarga to'g'ridan-to'g'ri kirish, dasturning samaradorligini oshirish uchun foydali bo'ladi. Axir, havoladagi ob'ektlarga (hatto eng kichik) har bir kirish hisoblash resurslar va operativ xotira iste'moli uchun qo'shimcha sarflar bilan bog'liq. C# da bunday qiyinchiliklarni bartaraf etish uchun sinfga o'xshash ma`lumotlarning ko`rsatgich tipiga emas balki tip qiymatlariga bog`liq strukturamavjud. struct nom : interfeys { // a`zolarini e`lon qilish } nomstrukturaning aniq nomini anglatadi. Ba'zi strukturalar boshqa strukturalar va sinflarni meros qilib olmaydi yoki boshqa strukturalar va sinflar uchun asos bo'lib xizmat qila olmaydi. (Albatta, strukturalar ham C# tilidagi boshqa barcha ma'lumotlar tiplari kabi object sinfini meros qilib oladi.) Shunga qaramay, strukturada bir yoki bir nechta interfeyslarni amalga oshirish mumkin, bu holatda strukturaning nomidan keyin ular vergul bilan ko'rsatiladi. Sinflar singari, har bir strukturaning o'z a'zolari bor: metodlar, maydonlar, indeksatorlar, xususiyatlar, metod operatorlari va hodisalar. Strukturalarda konstruktorni aniqlash mumkin, ammo destruktorni aniqlash mumkin emas. Shu bilan birga, struktura uchun standart sifatida ishlatiladigan konstruktorni aniqlash mumkin emas (ya'ni parametrsiz konstruktor). Aslida, standart chaqirilgan konstruktorlar barcha strukturalar uchun avtomatik ravishda belgilanadi va o'zgartirilmaydi. Bunday konstruktor strukturaning maydonlariga sukut bo'yicha belgilangan qiymatlar bilan initsalizatsiya qiladi. Strukturalar merosni qo'llab - quvvatlamagani uchun ularning a'zolarini abstract, virtualyoki protecteddeb e`lon qilish mumkin emas.