我试图在C#规范中消化这个语句,该规范声明(§4.2):
引用类型是类类型、接口类型、数组类型或委托类型。
我知道结构可以实现接口。结构是值类型。
所以,我很难调和这些信息。这是否意味着结构在通过接口类型处理时表现为引用类型?这意味着你可以得到一个值类型的引用.
发布于 2011-06-10 04:00:45
这里有一篇博客文章,可能是说明性的。
http://blogs.msdn.com/b/abhinaba/archive/2005/10/05/477238.aspx
是的,如果将接口作为接口处理,实现接口的结构会作为引用类型装箱,如果您不小心,这可能会导致问题。
发布于 2011-06-10 04:01:16
是这样的。当在需要接口引用的上下文中使用值类型时,它会被装箱。如果需要System.Object,也会发生同样的情况。
您不能拥有的是对堆栈上的值类型实例或其他类型内的值类型实例的接口引用。装箱过程创建一个副本。
发布于 2011-06-10 04:03:23
是的,您可以获得对值类型的引用。每当将值类型分配给变量或作为参数传递给期望对象类型的方法时,值类型将隐式包装在对象实例中--一个称为装箱的进程。装箱是创建包含值的对象引用。当已装箱的对象被赋值或以值类型的形式使用时,它将被取消装箱并提取值。
https://stackoverflow.com/questions/6301812
复制相似问题