Sobes.tech
Junior

Каква е разликата между референтните и стойностните типове?

sobes.tech AI

Отговор от AI

Разликите в начина на съхранение и предаване на данни:

  • Типове стойност (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;
}
Характеристика Типове стойност Типове препратка
Място на съхранение Стек или вътре в екземпляр на тип стойност Купчина
Предаване/Присвояване Копие на стойността Копие на препратката
Наследяване Не Да
Управление на паметта Автоматично (стек) Събирач на отпадъци