Sobes.tech
Junior — Middle

Тавре намудҳои маълумоти истинодӣ бо намудҳои арзишӣ дар барномасозӣ чӣ фарқ доранд?

sobes.tech AI

Ҷавоб аз AI

Дар C# намудҳои маълумот ба намудҳои арзишӣ (value types) ва намудҳои истинодӣ (reference types) тақсим мешаванд.

Намудҳои арзишӣ маълумотҳоро мустақиман нигоҳ медоранд. Ҳангоми таъин кардан ё гузаронидан ба метод, худи арзиш нусхабардорӣ мешавад. Мисолҳо: int, double, struct, bool.

Намудҳои истинодӣ ишора ба минтақаи хотираро нигоҳ медоранд, ки дар он маълумотҳо ҷойгир шудаанд. Ҳангоми таъин кардан, ишора нусхабардорӣ мешавад, на маълумотҳо, бинобар ин чандин тағйирёбанда метавонад ба як объект ишора кунад. Мисолҳо: class, string, array.

Мисол:

int a = 5;
int b = a; // нусхабардории арзиши 5
b = 10;
// a ҳоло ҳам 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // нусхабардории ишора
p2.Name = "Bob";
// p1.Name ҳоло "Bob"

Аз ин сабаб, фарқи асосӣ дар он аст, ки чӣ гуна маълумотҳо нигоҳ дошта ва нусхабардорӣ мешаванд: намудҳои арзишӣ арзишҳоро нусхабардорӣ мекунанд, намудҳои истинодӣ ишораҳоро ба объектҳо нусхабардорӣ мекунанд.