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); // Иван
Таким образом, понимание разницы важно для управления состоянием данных и предотвращения неожиданных изменений.