Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչու են տարբեր ռեֆերենցիոն և արժեքային տիպերը C# լեզվում?

sobes.tech AI

Պատասխան AI-ից

C#-ում տվյալների տեսակները բաժանվում են արժեքային տեսակների (value types) և հղման տեսակների (reference types):

  • Արժեքային տեսակներ անմիջապես պահում են տվյալները: Երբ նշանակվում կամ փոխանցվում են մեթոդին, արժեքը պատճենվում է: Օրինակներ՝ int, double, struct:
  • Հղման տեսակներ պահում են հղում դեպի հիշողության տարածք, որտեղ գտնվում են տվյալները: Երբ նշանակվում է, պատճենվում է միայն հղումը, ոչ տվյալները: Օրինակներ՝ class, string, զանգվածներ:

Օրինակ՝

int a = 5;
int b = a; // b ստանում է արժեքի պատճենը 5
b = 10; // a մնում է 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 և p1 հղում են նույն օբյեկտին
p2.Name = "Bob"; // հիմա p1.Name նույնպես "Bob" է

Այսպիսով, հղման տեսակների փոփոխությունները մեկ փոփոխականի միջոցով արտացոլվում են բոլոր հղումներում, իսկ արժեքային տեսակների — ոչ։