Ma’lumot turlari (tiplar) — C#’ning poydevoridagi eng muhim tushunchalardan biri. C# qat’iy tipizatsiyalangan til: har bir o’zgaruvchi aniq turga ega bo’lishi shart. Tur qiymat qancha xotira egallashini va u ustida qanday amallar bajarilishini belgilaydi.
Ma’lumot turi — qiymatning tabiatini va hajmini belgilaydigan tasnif. C# turlari ikkiga bo’linadi: qiymat turlari (value types) va murojaat turlari (reference types).
Asosiy turlar
C#’ning eng ko’p ishlatiladigan turlarini jadvalda ko’ramiz:
| Tur | Nima saqlaydi | Misol |
|---|---|---|
int |
butun son | 26 |
long |
katta butun son | 9000000000 |
double |
kasr son | 3.14 |
decimal |
aniq kasr (pul uchun) | 15000.50m |
char |
bitta belgi | 'A' |
bool |
rost/yolg’on | true |
string |
matn | "UzbekDevs" |
Turlarni amalda ko’rish
Har bir turni e’lon qilib, natijasini kuzatamiz:
using System;
int yosh = 26;
double narx = 15000.75;
char daraja = 'A';
bool faol = true;
string ism = "Master Sherkulov";
Console.WriteLine($"{ism}, {yosh} yosh");
Console.WriteLine($"Narx: {narx}, daraja: {daraja}, faol: {faol}");
Master Sherkulov, 26 yosh
Narx: 15000.75, daraja: A, faol: True
E’tibor bering: bool turdagi true ekranga bosh harf bilan True bo’lib chiqdi — bu C#’ning o’ziga xosligi.
Qiymat va murojaat turlari
C# turlari ikki katta guruhga bo’linadi. Farqni jadvalda ko’ramiz:
| Xususiyat | Qiymat turi | Murojaat turi |
|---|---|---|
| Misol | int, double, bool |
string, massiv, obyekt |
| Nima saqlaydi | qiymatning o’zini | obyekt manzilini |
| Xotira | stack | heap |
var — turni avtomatik aniqlash
C# var kalit so’zi bilan turni qiymatdan avtomatik aniqlash imkonini beradi. Biroq baribir qat’iy tur saqlanadi:
using System;
var ism = "Farrux"; // string deb aniqlanadi
var yosh = 26; // int deb aniqlanadi
Console.WriteLine($"{ism}: {yosh}");
Farrux: 26
var kodni qisqartiradi, ammo tur baribir belgilanadi — ism doim string bo’lib qoladi. Bu Python’ning dinamik turidan farq qiladi.
Turlarni o’tkazish (casting)
Bir turni boshqasiga aylantirish mumkin. Kichik turdan kattaga avtomatik, kattadan kichikka esa qo’lda:
using System;
int a = 7;
double b = a; // avtomatik (int -> double)
double c = 9.8;
int d = (int)c; // qo'lda (double -> int, kasr tashlanadi)
Console.WriteLine($"{b} {d}");
7 9
(int)c kasr qismini tashladi (9.8 -> 9). Bu qat’iy nazorat C#’ning aniqligini ta’minlaydi.
Xulosa
Bu bo’limda C#’ning asosiy turlarini, qiymat va murojaat turlari farqini, var bilan avtomatik aniqlashni va type casting’ni ko’rib chiqdik. Diqqat: pul bilan ishlashda aniqlik uchun decimal ishlating. Keyingi darsda identifikator — nomlash qoidalariga o’tamiz.