Junior
Czym są typy danych referencyjnych?
sobes.tech AI
Odpowiedź od AI
Typy danych odwołania nie przechowują samej wartości, lecz odwołanie (adres w pamięci) do miejsca, w którym ta wartość jest przechowywana. Przy przypisaniu lub przekazaniu takich danych, kopiowana jest tylko referencja, a nie cały obiekt. Zmiany dokonane przez jedną referencję będą widoczne przy dostępie przez inne referencje wskazujące na ten sam obiekt.
Przykłady typów danych odwołania w różnych językach:
- Java: Klasy (
String,Object, własne klasy), interfejsy, tablice. - C#: Klasy (
string,object, własne klasy), interfejsy, delegaty, tablice. - Python: Wszystkie typy danych (listy, słowniki, krotki, zbiory, klasy, funkcje).
# Przykład w Pythonie
list1 = [1, 2, 3]
list2 = list1 # list2 odwołuje się do tej samej listy co list1
list2.append(4)
print(list1) # Wypis: [1, 2, 3, 4]
print(list2) # Wypis: [1, 2, 3, 4]
Różnica w stosunku do typów wartości polega na tym, że typy wartości przechowują samą wartość, a podczas przypisania/przekazania kopiowana jest cała wartość.
Przykład porównania:
| Charakterystyka | Typy wartości | Typy odwołania |
|---|---|---|
| Przechowywanie | Sama wartość | Odwołanie do wartości |
| Przypisanie/przekazanie | Kopia wartości | Kopia odwołania |
| Zmiana | Nie wpływa na oryginał | Zmienia oryginał |
| Przykład (C#) | int, struct, enum |
class, interface, array |