Sobes.tech
Back to questions
Junior — Middle
72

Чем отличаются типы данных, передаваемые по значению, от тех, что передаются по ссылке?

Answer from AI

sobes.tech AI

В C# типы данных делятся на значимые (value types) и ссылочные (reference types), и это влияет на способ передачи данных:

  • Передача по значению:

    • Копируется само значение.
    • Изменения внутри метода не влияют на оригинал.
    • Примеры: int, double, struct.
  • Передача по ссылке:

    • Копируется ссылка на объект в памяти.
    • Изменения внутри метода отражаются на оригинальном объекте.
    • Примеры: class, string (хотя строка неизменяема), массивы.

Пример:

void ModifyValue(int x) {
    x = 10; // изменится только локальная копия
}

void ModifyReference(Person p) {
    p.Name = "Иван"; // изменится объект, на который ссылается p
}

int a = 5;
ModifyValue(a);
Console.WriteLine(a); // 5

Person person = new Person { Name = "Пётр" };
ModifyReference(person);
Console.WriteLine(person.Name); // Иван

Таким образом, понимание разницы важно для управления состоянием данных и предотвращения неожиданных изменений.