【问题标题】:how to convert lambda expression to object directly?如何将 lambda 表达式直接转换为对象?
【发布时间】:2010-03-11 12:24:58
【问题描述】:

我必须通过这样的操作:

Action action = () => { ..// };
object o = action;

任何方法:

object o = () =>{};  //this doesn't compile

【问题讨论】:

    标签: c# object lambda


    【解决方案1】:

    Weeeell,委托是对象,但 lambda 不是。

    这个object o = (Action)(() => {}); 会编译,但我不知道它是否看起来更好。

    【讨论】:

      【解决方案2】:

      怎么样:

      object o = (Action) (() => { ... });
      

      虽然我真的不知道你为什么要首先将它存储为一个对象......

      【讨论】:

      • 我正在为一个线程实现一个消息队列,命令可以放入队列中执行。
      • 嗨,我是新来的。当有人在我写答案时发布相同的答案时,礼仪是什么。我应该删除它吗?现在看来有点多余了。
      • @Benny - 如果可以,请考虑使用像 Queue<Action> 这样的通用结构,这样 lambda 表达式就不必强制转换为对象。
      • @Greg,好吧,有时,我可能想将其他对象放入队列中。所以不仅仅是行动。
      • @Spike - 我会把你的答案留在原地。它可能得到了更多的支持,因为您解释了委托是对象。
      【解决方案3】:

      另一种选择,并非完全不同:

      object o = new Action(() => { });
      

      【讨论】:

      • 其实我更喜欢这个。无论如何,我在心理上将其他解决方案想象为构造函数。还不如说清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多