【问题标题】:System.Action delegate ignore parameter?System.Action 委托忽略参数?
【发布时间】:2016-01-08 20:43:50
【问题描述】:

我有这个:

public event Action<BaseCommodity> OnGatherActionSelected = delegate { };
gmp.OnGatherActionSelected += m_Worker.CharacterActions.StartGatherMaterials; // << takes a parameter

但现在我想使用事件来调用一个需要 0 个参数的方法

gmp.OnGatherActionSelected += ParentPanel.RedrawUI; // does not take parameters .. DOES NOT WORK :(

我该怎么做?

【问题讨论】:

  • 如果你想要一个没有参数的处理程序,你应该使用Action而不是Action&lt;T&gt;
  • 我主要需要参数,只有一种情况我想忽略参数并调用方法......我不敢相信没有办法跳过参数
  • 所以只需使用 Guffa 和 Charles 提供的 obj.YourEvent += x=&gt;yourMethod(); 忽略它。

标签: c# unity3d delegates


【解决方案1】:

最简单的选择是添加一个接受参数并忽略它的处理程序,委托给您要使用的方法:

gmp.OnGatherActionSelected += _ => ParentPanel.RedrawUI();

【讨论】:

  • 嗯,这确实很容易!谢谢!
【解决方案2】:

你可以把它包装在一个带参数的方法中:

gmp.OnGatherActionSelected += x => ParentPanel.RedrawUI();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    相关资源
    最近更新 更多