Sobes.tech
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