DEV Community

Zahro
Zahro

Posted on

27. Value Type va Reference Type(Advanced)

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

Top comments (0)