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"
Հիմնական տարբերությունը՝ տվյալների պահպանումն ու կոպիավորումը՝ արժեքային տեսակները կոպիառում են արժեքները, հղման տեսակները՝ հղումները օբյեկտներին։