Junior
Koja je razlika između referentnih i vrednosnih tipova?
sobes.tech АИ
Одговор од АИ
Разлике у начину складиштења и преноса података:
-
Типови вредности (Value Types):
- Се складишти директно там где су проглашени (на стеку или унутар примерка вредносног типа).
- Приликом доделе или преноса по вредности, креира се копија вредности.
- Укључују примитивне типове (int, float, bool итд.), структуре (struct) и енаме (enum).
- Јесу затворени (sealed) и не могу се наследити.
-
Типови референци (Reference Types):
- Се складиште у хипу. Променљива садржи не вредност, већ референцу на адресу у хипу.
- Приликом доделе или преноса по вредности, копира се само референца, а не објекат.
- Укључују класе (class), интерфејсе (interface), делегате (delegate) и низове (array).
- Могу подржавати наследство.
- Гаражни сакупљач управља ослобађањем меморије за објекте референцног типа, на које више нема активних референци.
// Пример вредносног типа (struct)
struct Point
{
public int X;
public int Y;
}
// Пример референцног типа (class)
class Circle
{
public int Radius;
}
| Карактеристика | Типови вредности | Типови референци |
|---|---|---|
| Место складиштења | Стек или унутар примерка вредносног типа | Хип |
| Пренос/Додела | Копија вредности | Копија референце |
| Наслеђивање | Не | Да |
| Управљање меморијом | Аутоматски (стек) | Гаражни сакупљач |