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"

Հիմնական տարբերությունը՝ տվյալների պահպանումն ու կոպիավորումը՝ արժեքային տեսակները կոպիառում են արժեքները, հղման տեսակները՝ հղումները օբյեկտներին։