什么实现" ref参数作为框"意思?

时间:2014-10-24 14:42:57

标签: c# visual-studio-2010 clr

我最近正在阅读有关CS1628的答案,“不能在匿名方法,lambda表达式或查询表达式中使用ref或out参数'参数'。

答案说明了一种方法是在CLR中实现“ref parameters as box”。

C# compiler error CS1628 with VS2010/C#4

我不确定这意味着什么,似乎无法在谷歌中找到任何引用。

任何人都可以向我解释一下这个问题吗?

1 个答案:

答案 0 :(得分:2)

您可以声明一个"框"类:

class Box<T> { public T Value; }

将该类的实例传递给您无法使用ref的方法。该方法可以进入对象并变异Value。调用者稍后可以提取Value

这有效(与ref无关)因为Box在堆上分配并且具有&#34;无限&#34;一生。 ref只能引用生命周期受限制的地点。