Sobes.tech
Junior — Middle

Ar galite paaiškinti, kuo skiriasi nuorodų tipai nuo reikšmių tipų C# kalboje?

sobes.tech AI

Atsakymas iš AI

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

  • Reikšmės tipai saugo duomenis tiesiogiai. Priskyrimo ar perdavimo į metodą metu, reikšmė kopijuojama. Pavyzdžiai: int, double, struct.
  • Nuorodų tipai saugo nuorodą į atminties sritį, kurioje yra duomenys. Priskyrimo metu kopijuojama tik nuoroda, o ne patys duomenys. Pavyzdžiai: class, string, masyvai.

Pavyzdys:

int a = 5;
int b = a; // b gauna kopiją iš reikšmės 5
b = 10; // a lieka 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 ir p1 nurodo tą patį objektą
p2.Name = "Bob"; // dabar p1.Name taip pat yra "Bob"

Taip, nuorodų tipų pakeitimai per vieną kintamąjį atsispindi visuose nuorodose, o reikšmės tipų — ne.