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 и p1 сочат към един и същи обект
p2.Name = "Bob"; // сега p1.Name също е "Bob"

По този начин, промените в референтните типове чрез една променлива се отразяват на всички референции, а при стойностните типове — не.