Sobes.tech
Junior — Middle

Kuo skiriasi nuorodų tipai nuo reikšmių tipų programavime?

sobes.tech AI

Atsakymas iš AI

C# kalboje duomenų tipai skirstomi į reikšmės tipus (value types) ir nuorodų tipus (reference types).

Reikšmės tipai saugo duomenis tiesiogiai. Priskiriant ar perduodant į metodą, kopijuojama pati reikšmė. Pavyzdžiai: int, double, struct, bool.

Nuorodų tipai saugo nuorodą į atminties sritį, kurioje yra duomenys. Priskiriant, kopijuojama nuoroda, ne duomenys, todėl keli kintamieji gali rodyti į tą patį objektą. Pavyzdžiai: class, string, array.

Pavyzdys:

int a = 5;
int b = a; // kopijuojama reikšmė 5
b = 10;
// a vis dar 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // kopijuojama nuoroda
p2.Name = "Bob";
// p1.Name dabar "Bob"

Pagrindinis skirtumas — duomenų saugojimo ir kopijavimo būdas: reikšmės tipai kopijuoja reikšmes, nuorodų tipai — nuorodas į objektus.