27. Value Type va Reference Type(Advanced)

Zahro - Oct 16 - - Dev Community

a) C# da struct va class orasidagi asosiy farq:

struct (qiymat turi):

struct qiymat turi bo'lib, uning obyektlari stackda saqlanadi.

struct da o'zgarishlar asl nusxaga (obyektga) ta'sir qilmaydi, ya'ni nusxa olinadi.

Odatda kichik va oddiy ma'lumotlarni saqlash uchun ishlatiladi.

class (havola turi):

class havola turi bo'lib, obyektlari heapda saqlanadi.

Obyektning havolasi ishlatiladi, shuning uchun o'zgarishlar asl obyektga ta'sir qiladi.

Katta va murakkab ma'lumotlar yoki ob'ektlar uchun ishlatiladi.

b) Quyidagi kod qanday natija beradi:

struct Point
{ 
    public int X;
    public int Y;
}
Enter fullscreen mode Exit fullscreen mode

Bu kodda Point structi hech qanday metodlar ishlatilmaganligi sababli faqat X va Y maydonlariga ega bo'lgan tuzilmadir. Agar bu structdan obyekt yaratilsa, X va Y qiymatlari berilmasa, ular avtomatik ravishda 0 ga teng bo'ladi. Misol:

Point p1 = new Point();
p1.X = 10;
p1.Y = 2;
Point p2 = p1;
p2.X = 30;

Console.WriteLine(p1.X);
Enter fullscreen mode Exit fullscreen mode

Bu yerda struct qiymat turi (value type) hisoblanadi, shuning uchun p2 p1ning nusxasi bo'ladi, ammo ular bir xil obyekt emas. Ya'ni, p2.X qiymatini o'zgartirish p1.Xga ta'sir qilmaydi. Shu sababli,
natija:

10

. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terabox Video Player