Sobes.tech
Junior

Ի՞նչ է տարբերությունը հղման և արժեքի տիպերի միջև։

sobes.tech AI

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

Տվյալների պահման և փոխանցման եղանակների տարբերությունները.

  • Արժեքային տեսակներ (Value Types):

    • Նշված վայրում անմիջապես պահվում են (ստեկում կամ արժեքային տիպի օրինակի ներսում):
    • Արժեքի նշանակման կամ փոխանցման ժամանակ, ստեղծվում է արժեքի պատճեն:
    • ներառում է հիմնական տիպեր (int, float, bool և այլն), կառուցվածքներ (struct) և ցուցակներ (enum):
    • Սահմանված են (sealed) և ժառանգել չեն կարող:
  • Հղումային տեսակներ (Reference Types):

    • Սպասվում են heap-ում: Փոփոխականը պարունակում է ոչ թե արժեքը, այլ հղում heap-ի հասցեին:
    • Արժեքի նշանակման կամ փոխանցման ժամանակ, միայն հղումը պատճենվում է, ոչ թե օբյեկտը:
    • ներառում է դասեր (class), ինտերֆեյսներ (interface), դելեգատներ (delegate) և զանգվածներ (array):
    • Կարող են ժառանգել:
    • աղբաման հավաքողը կառավարում է հիշողության ազատումը հղումային տիպի օբյեկտների համար, որոնց համար այլ ակտիվ հղումներ չկան:
// Արժեքային տիպի օրինակ (struct)
struct Point
{
    public int X;
    public int Y;
}

// Հղումային տիպի օրինակ (class)
class Circle
{
    public int Radius;
}
Գծանշում Արժեքային տիպեր Հղումային տիպեր
Հիշողության տեղը Ստեկ կամ արժեքային տիպի օրինակ ներսում Heap
Հանձնարարում/տվյալներ Արժեքի պատճեն Հղման պատճեն
ժառանգություն Ոչ Այո
Հիշողության կառավարում Ավտոմատ (ստեկ) Աղբամ հավաքող