我所知道的唯一.NET语言是C#。在C#中,您可以编写lhs=rhs
,如果它是一个结构,它将按值复制,如果它是通过引用复制的类。
.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
答案 0 :(得分: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;
}
然而,相反的方法是不可能的。如果您有一个引用类型,并且您创建了它的副本,则创建引用本身的副本,而不是引用的对象的副本。如果要复制引用的对象,则需要编写一个函数来自行复制。