Sobes.tech
Junior — Middle

C# dilində istinad növləri ilə dəyər növləri arasındakı fərqlər nələrdir və istifadədə əsas fərqlər hansılardır?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində tiplər dəyər tipləri (value types) və referans tipləri (reference types) olaraq bölünür.

Dəyər tipləri məlumatları birbaşa saxlayır. Nümunələr: int, double, struct. Təyin etdikdə və ya metoda ötürəndə, öz dəyəri kopyalanır, yəni müstəqil nüsxə yaradılır.

Referans tipləri yaddaşda obyektə istinad edir (heap-də). Nümunələr: class, string, massivlər. Təyin etdikdə, yalnız istinad kopyalanır, obyekt deyil, ona görə də bir neçə dəyişən eyni obyektə istinad edə bilər.

Əsas fərqlər:

  • Yadda saxlanma: dəyər tipləri adətən yığın (stack), referans tipləri yığın (heap) üzərində yerləşir.
  • Kopyalama: dəyər tipləri dəyər ilə, referans tipləri isə istinad ilə kopyalanır.
  • Dəyişiklik zamanı davranış: dəyər tipini dəyişdirmək digər nüsxələri təsir etmir, referans tipli obyektin dəyişdirilməsi bütün istinadlara əks olunur.

Nümunə:

int a = 5;
int b = a; // dəyərin nüsxəsi
a = 10; // a dəyişməz, 5 qalır

class Şəxs { public string Ad; }
Şəxs p1 = new Şəxs { Ad = "Иван" };
Şəxs p2 = p1; // istinadın nüsxəsi
p2.Ad = "Пётр"; // p1.Ad də "Пётр" olacaq