Тавре намудҳои маълумоти истинодӣ бо намудҳои арзишӣ дар барномасозӣ чӣ фарқ доранд?
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"
Аз ин сабаб, фарқи асосӣ дар он аст, ки чӣ гуна маълумотҳо нигоҳ дошта ва нусхабардорӣ мешаванд: намудҳои арзишӣ арзишҳоро нусхабардорӣ мекунанд, намудҳои истинодӣ ишораҳоро ба объектҳо нусхабардорӣ мекунанд.