代码之家  ›  专栏  ›  技术社区  ›  Vaccano

分配接受参数的委托

  •  2
  • Vaccano  · 技术社区  · 14 年前

    我正在查看backgroundWorker.reportProgress方法。它可以取1个参数(int)或2个参数(int,object)。

    如果我想这样分配ReportProgress:

    var ReportProgressMethod = backgroundWorker.ReportProgress;
    

    我得到一个错误,说有一个模棱两可的引用,因为(当然)该方法可以采用参数集。

    如何更改上述语句以表示我要使用 int, object 方法的版本。

    (这背后的想法是,我想将reportProgressMethod作为参数传递给一个方法。)

    2 回复  |  直到 14 年前
        1
  •  13
  •   Sam Harwell    14 年前
    Action<int, object> reportProgressMethod = backgroundWorker.ReportProgress;
    
        2
  •  2
  •   Rune FS    14 年前

    有多种方法可以帮助编译器,但基本上只需要以某种方式使委托类型显式。我的首选是:

    var ReportProgressMethod = new Action<int,object>(backgroundWorker.ReportProgress);
    

    编译器无论如何都会这样做(实例化一个新的委托,不管你是否写了新的委托),但是igor在他的评论中是正确的,一个强制转换也可以工作。