Я читаю CLR Джеффри Рихтерса через C #, и в нем он говорит с параметрами ref, что сама ссылка передается по значению.Это имеет смысл для меня и кажется аналогичным указателям.
то есть в C, если я передаю указатель на функцию и затем назначаю указатель через malloc, он меняет указатель, чтобы указывать на новое место в памяти, однако я знаюпоскольку сам указатель является копией, он не переназначает исходный указатель, который был передан в функцию.Чтобы выполнить изменение указателя вне функции, я должен использовать двойной указатель.
Однако в C #:
void Swap(ref Object a, ref Object b)
{
Object t = b;
b = a;
a =t ;
}
работает.Это указывает на то, что ссылки не по значению.По аналогии с вышеупомянутым malloc, я предполагаю, что мог бы передать объект по ссылке и назначить ему новый объект, и переназначение сохранится за пределами функции.
Может кто-нибудь разобраться в моем замешательстве?