C# Ma’lumot turlari (tiplar)

C# tiplashgan til hisoblanadi. Har bir obyektni hosil qilishda uning tipini e`lon qilish zarur (masalan butun son, haqiqiy son, forma, oyna, tugma(knopka), satr va boshqalar). Shu orqali kompilyator xatolardan holi bo`lishni, ya`ni o`zgaruvchi qabul qilishi mumkin bo`lgan qiymatlarni qabul qilishini ta`minlaydi. Obyekt tipi kompilyatorga obyekt o`lchamini (masalan int tipidagi obyekt xotiradan 4 bayt egallaydi), uning xususiyatlarini (masaslan forma ko`rinadigan va ko`rinmaydigan bo`lishi mumkin) ko`rsatadi.

Xuddi C++ va Java tillari kabi C# da ham tiplar 2 guruhga ajratiladi: Oldindan aniqlangan tilning ichki tiplari va foydalanuvchi (dasturchi) tomonidan aniqlanadigan tiplar.

C# yana tiplarni 2 kategoriyaga bo`ladi: o`lchovli tiplar va ko`rsatqichli tiplar. Ular orasidagi asosiy farq qiymatlarini xotirada saqlash usuli. O`lchovli tiplar qiymatlarini stekda saqlanadi. Ko`rsatqichli tiplar obyektning faqat manzilini stekda, o`zini esa ko’chada saqlaydi. Ko’cha dasturning asosiy xotirasi hisolanadi. Ko’chaga murojaat qilish stekka murojaat qilishdan ko`ra sekin. Katta obyektlarni ko’chada saqlash ko`pgini imkoniyatlarga ega. Bu haqda keyinchalik to`xtalamiz.

Stek ma`lumotlar strukturasi. U elementarni “birinchi kelgan, oxirgi ketadi” prinsipi bo`yicha saqlaydi. Stek prosessor tomonidan qo`llab quvvatlanadigan xotira sohasiga tegishli. Unda lokal o`zgaruvchilar saqlanadi. Stekka murojaat umumiy xotira sohasiga murojaatga nisbatan bir necha marotaba tezroq. Shuning uchun ma`lumotlarni stekda saqlash dasturning ishlash tezligini oshiradi. C# da o`lchovli tiplar(masalan butun sonlar) qiymatini stekda saqlaydi va unga murojaat o`zgaruvchi nomi bilan amalga oshiriladi. Ko`rsatqichli tiplar ko’chada joylahadi. Ko’cha kompyuterning tezkor xotirasi. Unga murojaat stekka murojaatga nisbatan sekinroq. Agar obyekt ko’chada joylashgan bo`lsa, o`zgaruvchi uning faqat manzilini saqlaydi. Bu manzil stekda saqlanadi. Manzil orqali dastur obyektga murojaat qiladi. Stekda joylashgan har bir o`zgaruvchi ko`rinish sohasidan chiqqan zahoti “сборщик мусора” tomonidan o`chiriladi. Funksiya tanasida e`lon qilingan lokal o`zgaruvchilar runksiya ishini tugatishi bilan o`chiriladi. Ko’chada joylashgan obyektlar ham “сборщик мусора” tomonidan o`chiriladi. Bu obyektni ko`rsatib turgan barcha ko`rsatkichlar bilan obyekt orasidagi aloqa uzilganda amalga oshiriladi.

Avvaldan mavjud ichki tiplar

      C# tili CLS(Common Language Specification) ga mos keladigan keng tiplar to`plamini taqdim etadi. Bu tiplar NET platformasiga mos keladi yani C# da hosil qilingan obyektlar NET CLS qo`llab quvvatlaydigan har qanday dasturlash tilida foydalanish mumkin (masalan VB.NET). Har bir tip aniq o`zining o`zgarmas o`lchamiga ega. Quyida C# tomonidan taqdim etilgan tiplar ro`yhati jadvalda keltirilgan:

Yuqoridagiga qo`shimcha tarzda C# da yana enum, struct tipidagi obyektlar ham bor.