Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε σε τι διαφέρουν οι τύποι αναφοράς από τους τύπους τιμής στη γλώσσα C#;

sobes.tech AI

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

Στην C#, οι τύποι δεδομένων χωρίζονται σε τύπους τιμών (value types) και τύπους αναφοράς (reference types).

  • Τύποι τιμών αποθηκεύουν τα δεδομένα άμεσα. Κατά την ανάθεση ή την μεταβίβαση σε μια μέθοδο, η τιμή αντιγράφεται. Παραδείγματα: int, double, struct.
  • Τύποι αναφοράς αποθηκεύουν μια αναφορά στην περιοχή μνήμης όπου βρίσκονται τα δεδομένα. Κατά την ανάθεση, αντιγράφεται μόνο η αναφορά, όχι τα δεδομένα. Παραδείγματα: class, string, πίνακες.

Παράδειγμα:

int a = 5;
int b = a; // το b λαμβάνει ένα αντίγραφο της τιμής 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"

Έτσι, οι αλλαγές στους τύπους αναφοράς μέσω μιας μεταβλητής αντικατοπτρίζονται σε όλες τις αναφορές, ενώ στους τύπους τιμών όχι.