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

Επομένως, η κύρια διαφορά είναι ο τρόπος αποθήκευσης και αντιγραφής των δεδομένων: οι τύποι τιμών αντιγράφουν τις τιμές, οι τύποι αναφοράς αντιγράφουν αναφορές σε αντικείμενα.