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 |
| Հանձնարարում/տվյալներ | Արժեքի պատճեն | Հղման պատճեն |
| ժառանգություն | Ոչ | Այո |
| Հիշողության կառավարում | Ավտոմատ (ստեկ) | Աղբամ հավաքող |