首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对C#规范中的引用类型和值类型略有混淆

对C#规范中的引用类型和值类型略有混淆
EN

Stack Overflow用户
提问于 2011-06-10 03:57:36
回答 4查看 131关注 0票数 2

我试图在C#规范中消化这个语句,该规范声明(§4.2):

引用类型是类类型、接口类型、数组类型或委托类型。

我知道结构可以实现接口。结构是值类型。

所以,我很难调和这些信息。这是否意味着结构在通过接口类型处理时表现为引用类型?这意味着你可以得到一个值类型的引用.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-10 04:00:45

这里有一篇博客文章,可能是说明性的。

http://blogs.msdn.com/b/abhinaba/archive/2005/10/05/477238.aspx

是的,如果将接口作为接口处理,实现接口的结构会作为引用类型装箱,如果您不小心,这可能会导致问题。

票数 3
EN

Stack Overflow用户

发布于 2011-06-10 04:01:16

是这样的。当在需要接口引用的上下文中使用值类型时,它会被装箱。如果需要System.Object,也会发生同样的情况。

您不能拥有的是对堆栈上的值类型实例或其他类型内的值类型实例的接口引用。装箱过程创建一个副本。

票数 3
EN

Stack Overflow用户

发布于 2011-06-10 04:03:23

是的,您可以获得对值类型的引用。每当将值类型分配给变量或作为参数传递给期望对象类型的方法时,值类型将隐式包装在对象实例中--一个称为装箱的进程。装箱是创建包含值的对象引用。当已装箱的对象被赋值或以值类型的形式使用时,它将被取消装箱并提取值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6301812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档