Sobes.tech
Junior — Middle

როგორ მუშაობს მითითების ტიპების მონაცემები მეხსიერებაში და როგორ განსხვავდება ისინი მნიშვნელობის ტიპებიდან?

sobes.tech AI

პასუხი AI-სგან

C# ენაში ორი ძირითადი მონაცემთა ტიპია: მნიშვნელობის ტიპები (value types) და მითითების ტიპები (reference types).

  • მნიშვნელობის ტიპები პირდაპირ ინახავენ მონაცემებს მეხსიერებაში, სადაც გამოაცხადეს. მაგალითად, int, struct. გადაცემისას, მნიშვნელობა კოპირდება, და თითოეული ცვლადი ინახავს თავის კოპიას.

  • მითითების ტიპები ინახავენ ცვლადში არა მონაცემებს, არამედ მითითებას (პოინტერს) მეხსიერების იმ უბნისკენ, სადაც მონაცემები მდებარეობს. მაგალითად, class, string. გადაცემისას, კოპირდება მხოლოდ მითითება, არა ობიექტი, ამიტომ რამდენიმე ცვლადი შეიძლება მიუთითებდეს ერთ ობიექტზე.

მაგალითი:

int a = 5;
int b = a; // მნიშვნელობის კოპია
b = 10;
// a კვლავ 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // მითითების კოპია
p2.Name = "Пётр";
// p1.Name ასევე "Пётр" არის, რადგან p1 და p2 მიუთითებენ ერთ ობიექტზე

ამ გზით, მითითების ტიპები საშუალებას აძლევენ მუშაობას ერთ ობიექტთან სხვადასხვა ცვლადიდან, ხოლო მნიშვნელობის ტიპები ინახავენ დამოუკიდებელ კოპიებს მონაცემების.