2012-01-14 2 views
0

Единственный язык, который я знаю, это C#. В C# вы можете написать lhs=rhs, и если его структура будет копироваться по значению, если класс копирует по ссылке.Поддерживает ли .NET IL копию по ссылке или по значению?

Поддерживает ли .NET CLI выполнение на любом типе объекта? Могу ли я создать struct Pt { int x, y; } и сделать что-то вроде

Pt pt 
var pt_ref=&pt 
pt_ref.x=99 //pt.x is now 99 
var pt_cpy=pt 
pt_cpy.x=88 //nothing else has changed 

ответ

3

В ссылках уровня 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; 
} 

Однако, наоборот не представляется возможным. Если у вас есть ссылочный тип, и вы создаете его копию, вы создаете копию самой ссылки, а не ссылочного объекта. Если вы хотите скопировать ссылочный объект, вам нужно написать функцию, чтобы скопировать ее самостоятельно.

+0

Ницца! Благодаря! (осталось символов) –