Πώς λειτουργούν οι τύποι δεδομένων αναφοράς στη μνήμη και πώς διαφέρουν από τους τύπους τιμών;
sobes.tech AI
Απάντηση από AI
Στη C# υπάρχουν δύο βασικοί τύποι δεδομένων: τύποι τιμών (value types) και τύποι αναφοράς (reference types).
-
Οι τύποι τιμών αποθηκεύουν τα δεδομένα απευθείας στη μνήμη όπου δηλώνονται. Για παράδειγμα,
int,struct. Κατά την ανάθεση, αντιγράφεται η τιμή, και κάθε μεταβλητή διατηρεί το δικό της αντίγραφο. -
Οι τύποι αναφοράς αποθηκεύουν στη μεταβλητή όχι τα δεδομένα, αλλά μια αναφορά (δείκτη) στη περιοχή μνήμης όπου βρίσκονται τα δεδομένα. Για παράδειγμα,
class,string. Κατά την ανάθεση, αντιγράφεται μόνο η αναφορά, όχι το αντικείμενο, έτσι πολλές μεταβλητές μπορούν να δείχνουν στο ίδιο αντικείμενο.
Παράδειγμα:
int a = 5;
int b = a; // αντίγραφο της τιμής
b = 10;
// το a εξακολουθεί να είναι 5
class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // αντίγραφο της αναφοράς
p2.Name = "Пётр";
// το p1.Name επίσης είναι "Пётр", επειδή το p1 και το p2 δείχνουν στο ίδιο αντικείμενο
Έτσι, οι τύποι αναφοράς επιτρέπουν την εργασία με ένα αντικείμενο από διαφορετικές μεταβλητές, ενώ οι τύποι τιμών αποθηκεύουν ανεξάρτητα αντίγραφα των δεδομένων.