Junior — Middle
Ποια είναι η διαφορά μεταξύ των τύπων δεδομένων αναφοράς και των τύπων δεδομένων τιμής στον προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Στην C#, οι τύποι δεδομένων χωρίζονται σε τύπους τιμών (value types) και τύπους αναφοράς (reference types).
Οι τύποι τιμών αποθηκεύουν τα δεδομένα απευθείας. Κατά την ανάθεση ή την μεταβίβαση σε μια μέθοδο, αντιγράφεται η ίδια η τιμή. Παραδείγματα: int, double, struct, bool.
Οι τύποι αναφοράς αποθηκεύουν μια αναφορά σε μια περιοχή μνήμης όπου βρίσκονται τα δεδομένα. Κατά την ανάθεση, αντιγράφεται η αναφορά, όχι τα δεδομένα, επομένως πολλές μεταβλητές μπορούν να δείχνουν στο ίδιο αντικείμενο. Παραδείγματα: class, string, array.
Παράδειγμα:
int a = 5;
int b = a; // αντιγράφεται η τιμή 5
b = 10;
// το a εξακολουθεί να είναι 5
class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // αντιγράφεται η αναφορά
p2.Name = "Bob";
// το p1.Name τώρα είναι "Bob"
Επομένως, η κύρια διαφορά είναι ο τρόπος αποθήκευσης και αντιγραφής των δεδομένων: οι τύποι τιμών αντιγράφουν τις τιμές, οι τύποι αναφοράς αντιγράφουν αναφορές σε αντικείμενα.