.NET IL 是否支持按引用或按值复制?
我所知道的唯一 .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
The only .NET language i know is C#. In C# you can write lhs=rhs
and if its a struct it will copy by value, if a class it copies by reference.
Does the .NET CLI support doing either on any type of object? Can i create a struct Pt { int x, y; }
and do something like
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 IL 级别,对值类型的引用是可能的。 C# 不允许使用它们(参数中除外,使用
ref
关键字),但在 C++/CLI 中您可以编写示例:但是,反之则不可能。如果您有一个引用类型,并且创建了该类型的副本,那么您将创建该引用本身的副本,而不是所引用对象的副本。如果要复制引用的对象,需要自己写一个函数来复制。
At the IL level references to value types are a possibility. C# disallows them (except in parameters, using the
ref
keyword), but in C++/CLI you can write your example:However, the other way around is not possible. If you have a reference type, and you create a copy of that, you create a copy of the reference itself, not of the referenced object. If you want to copy the referenced object, you need to write a function to copy it yourself.