На уровне IL возможны ссылки на типы значений. C # запрещает их (кроме параметров, использующих ключевое слово ref
), но в C ++ / CLI вы можете написать свой пример:
value struct Pt
{
int x;
int y;
};
void f()
{
Pt pt;
Pt% ptRef = pt;
ptRef.x = 99;
Pt ptCpy = pt;
ptCpy.x = 88;
}
Однако, обратный путь невозможен. Если у вас есть ссылочный тип, и вы создаете его копию, вы создаете копию самой ссылки, а не ссылочного объекта. Если вы хотите скопировать ссылочный объект, вам нужно написать функцию, чтобы скопировать его самостоятельно.