我最近正在阅读有关CS1628的答案,“不能在匿名方法,lambda表达式或查询表达式中使用ref或out参数'参数'。
答案说明了一种方法是在CLR中实现“ref parameters as box”。
C# compiler error CS1628 with VS2010/C#4
我不确定这意味着什么,似乎无法在谷歌中找到任何引用。
任何人都可以向我解释一下这个问题吗?
答案 0 :(得分:2)
您可以声明一个"框"类:
class Box<T> { public T Value; }
将该类的实例传递给您无法使用ref
的方法。该方法可以进入对象并变异Value
。调用者稍后可以提取Value
。
这有效(与ref无关)因为Box
在堆上分配并且具有&#34;无限&#34;一生。 ref
只能引用生命周期受限制的地点。