Sobes.tech
Junior

Τι είναι οι τύποι δεδομένων αναφοράς;

sobes.tech AI

Απάντηση από AI

Οι τύποι δεδομένων αναφοράς δεν αποθηκεύουν την τιμή καθαυτή, αλλά μια αναφορά (διεύθυνση στη μνήμη) στον χώρο όπου αποθηκεύεται αυτή η τιμή. Κατά την ανάθεση ή τη μεταβίβαση τέτοιων δεδομένων, αντιγράφεται μόνο η αναφορά, όχι το πλήρες αντικείμενο. Οι αλλαγές που γίνονται μέσω μιας αναφοράς θα είναι ορατές κατά την πρόσβαση μέσω άλλων αναφορών που δείχνουν στο ίδιο αντικείμενο.

Παραδείγματα τύπων δεδομένων αναφοράς σε διαφορετικές γλώσσες:

  • Java: Κλάσεις (String, Object, προσαρμοσμένες κλάσεις), διεπαφές, πίνακες.
  • C#: Κλάσεις (string, object, προσαρμοσμένες κλάσεις), διεπαφές, delegates, πίνακες.
  • 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