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 указать на ту же ссылку в памяти ... кто-то может уточнить, где я ошибся?

Ответы на вопрос(7)

Ваш ответ на вопрос