Sobes.tech
Junior

Какви са референтните типове данни?

sobes.tech AI

Отговор от AI

Типовете данни с препратка не съхраняват самата стойност, а препратка (адрес в паметта) към мястото, където тази стойност се съхранява. При присвояване или предаване на такива данни се копира само препратката, а не целият обект. Промените, направени чрез една препратка, ще бъдат видими при достъп чрез други препратки, сочещи към същия обект.

Примери за типове данни с препратка в различни езици:

  • Java: Класове (String, Object, потребителски класове), интерфейси, масиви.
  • C#: Класове (string, object, потребителски класове), интерфейси, делегати, масиви.
  • Python: Всички типове данни (списъци, речници, кортежи, множества, класове, функции).
# Пример в Python
list1 = [1, 2, 3]
list2 = list1  # list2 се отнася към същия списък като list1

list2.append(4)

print(list1)  # Изход: [1, 2, 3, 4]
print(list2)  # Изход: [1, 2, 3, 4]

Разликата спрямо типовете данни със стойност е, че стойностните типове съхраняват стойността сама по себе си, и при присвояване или предаване цялата стойност се копира.

Пример за сравнение:

Характеристика Стойностни типове Типове с препратка
Съхранение Самата стойност Препратка към стойността
Присвояване/преминаване Копие на стойността Копие на препратката
Промяна Не влияе на оригинала Модифицира оригинала
Пример (C#) int, struct, enum class, interface, array