【问题标题】:What does implementing "ref parameters as boxes" mean?将“参考参数作为框”实现是什么意思?
【发布时间】:2014-12-20 10:21:06
【问题描述】:

我最近在阅读有关 CS1628 的答案,“Cannot use ref or out parameter 'parameter' inside an anonymous method, lambda expression, or query expression”。

解决此问题的答案是在 CLR 中实现“将参数作为框”。

C# compiler error CS1628 with VS2010/C#4

我不确定这意味着什么,并且似乎无法在 google 中找到任何对它的引用。

任何人都可以向我解释一下这是我头脑中的问题吗?

【问题讨论】:

  • 用户在谈论 C# 作为一种语言可以做(但没有做)来启用此功能。他不是在谈论您将如何解决缺少该功能的问题。
  • 没有办法解决这个问题 - 评论正在讨论改变编译器和/或 CLR 以使其成为可能的方法。
  • 对不起,如果我可能不够清楚,我知道用户在谈论他们在语言方面可以做的事情,我更了解他所指的框CLR?
  • 基本上,您创建一个自定义对象来包装或“装箱”您要传递的值。有关更多实施,请参阅 usr 的答案。

标签: c# visual-studio-2010 clr


【解决方案1】:

你可以声明一个“盒子”类:

class Box<T> { public T Value; }

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

这有效(与 ref 对比)因为Box 分配在堆上并且具有“无限”生命周期。 ref 只能引用生命周期更受限制的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2010-10-25
    相关资源
    最近更新 更多