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 |