C# dasturlash tilida ma'lumot turlari va ularning ustun hamda kamchiliklari
Tags: beginners, tutorial, devops, dotnet
Published: 2024-04-12 17:10:01

**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'pgina 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. Quyida ba'zi tiplarga misollarni ko'rishingiz mumkin.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/erqe1xyunijxyofdfm5p.png)

C# dasturlash tilida  Standart qiymatlar ham mavjud quyida keltirilgan.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cca820stvi1axrcs6jji.png)





## 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:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jhhucsbj9gnu9gmtsjwk.png)


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

Shu bilan bir qatorda tiplar ustida Konvertatsiyalashimiz ham mumkin. 
Quyida keltirilgan suratda ko'rishingiz mumkin qaysi tiplar ustida konvertatsiyani amalga oshirishimiz mumkinligini.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2tdf889ki5ytad18snav.png)



qo'shimcha ma'lumotlarni quyida keltirilgan link orqali olindi: [uzbekdevs.uz](https://uzbekdevs.uz/darsliklar/csharp/csharp-da-kirish)