Sobes.tech
Junior — Middle

Vai Jūs varat izskaidrot, kā atšķiras atsauces tipi no vērtību tipiem C# valodā?

sobes.tech AI

Atbilde no AI

C# valodu tipos ir sadalīti uz vērtības tipiem (value types) un atsauces tipiem (reference types).

  • Vērtības tipi tieši glabā datus. Pie piešķiršanas vai nodošanas metodei, vērtība tiek kopēta. Piemēri: int, double, struct.
  • Atsauces tipi glabā atsauci uz atmiņas apgabalu, kur atrodas dati. Pie piešķiršanas, tiek kopēta tikai atsauce, ne dati. Piemēri: class, string, masīvi.

Piemērs:

int a = 5;
int b = a; // b saņem kopiju no vērtības 5
b = 10; // a paliek 5

class Person { public string Name; }
Person p1 = new Person { Name = "Alice" };
Person p2 = p1; // p2 un p1 norāda uz to pašu objektu
p2.Name = "Bob"; // tagad p1.Name arī ir "Bob"

Tādējādi, atsauces tipu izmaiņas caur vienu mainīgo ietekmē visas atsauces, bet vērtības tipu — nē.