【问题标题】:Using Same Delegate Signature for Parameter and Parameterless Method对参数和无参数方法使用相同的委托签名
【发布时间】:2011-12-15 22:01:04
【问题描述】:

我有一个方法,它接受具有参数的方法委托

 public delegate void RunOperation(object o );
  public void Abort(RunOperation operationToRun, object obj)
  {
  }
  public void AllMessages()
  {
  }

是否可以将 AllMessage() 作为委托传递给 Abort() ?

我不想为无参数方法创建任何新的委托。

谢谢

【问题讨论】:

标签: c# .net c#-4.0


【解决方案1】:

不是和是。

你可以这样:

Abort(_ => AllMessages(), null);

但您只是在创建另一个调用 AllMessages 的方法,并且不使用 object 参数。

【讨论】:

    【解决方案2】:

    我会这样解决:

    public void Abort(Action operationToRun, object obj)
    {
    
    }
    public void Abort(Action<object> operationToRun, object obj)
    {
    
    }
    public void AllMessages()
    {
    
    } 
    

    解释

    为 Abort 方法创建一个重载。第一种方法采用不带参数的操作,第二种方法采用带参数的操作。因此,您可以使用无参数方法和带对象参数的方法调用 Abort。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多