C # передача по значению против передачи по ссылке
Рассмотрим следующий код(Я имеюцеленаправленно написал MyPoint, чтобы быть ссылочным типом для этого примера)
public class MyPoint
{
public int x;
public int y;
}
Общепризнанно (по крайней мере, в C #), что когда вы передаете по ссылке, метод содержит ссылку на объект, которым манипулируют, тогда как при передаче по значению метод копирует значение, которым манипулируют, поэтому значение в глобальной области видимости равно не затронут.
Пример:
void Replace<T>(T a, T b)
{
a = b;
}
int a = 1;
int b = 2;
Replace<int>(a, b);
// a and b remain unaffected in global scope since a and b are value types.
Вот моя проблема;MyPoint
является ссылочным типом, поэтому я ожидаю, что та же операция наPoint
заменитьa
сb
в глобальном масштабе.
Пример:
MyPoint a = new MyPoint { x = 1, y = 2 };
MyPoint b = new MyPoint { x = 3, y = 4 };
Replace<MyPoint>(a, b);
// a and b remain unaffected in global scope since a and b...ummm!?
Я ожидалa
а такжеb
указать на ту же ссылку в памяти ... кто-то может уточнить, где я ошибся?