函数引用与Action <T>有何不同

杰皮罗克

我昨天遇到这种情况,它一直在咬我。编译器在调用Action(据我理解是具有“ void”返回类型的委托)时,不会抱怨为DoThis方法使用对函数的引用。

DoThis函数上此Action参数的实际作用是什么?

public class testit
{
    // Call DoThis with just a function reference. Should not work, but does.
    public void DoThisThing1() {
        DoThis(this.thing1);
    }

    // Call DoThis with an action.  This is correct.
    public void DoThisThing2() {
        DoThis(new Action<string, string>(this.thing2));
    }

    private void DoThis(Action<string, string> thing)
    {
        // Do some common things here.

        // Invoke Action
        thing.Invoke("1", "2");

        // Do other things.
    }

    private void thing1(string p1, string p2){}

    private void thing2(string p1, string p2){}
}
马克·格雷韦尔

如果您的问题是为什么这样做有效:

DoThis(this.thing1);

然后隐式地:

DoThis(new Action<string,string>(this.thing1));

(其中的委托类型是根据的已解析方法签名来推断的DoThis

简单来说:编译器为我们填充了一些东西-自C#2起就存在的语法糖。在C#1.1中,它不会进行编译。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

这对JavaScript函数有何不同?

来自分类Dev

这些C函数有何不同?

来自分类Dev

Dart Factory构造函数-与“ const”构造函数有何不同

来自分类Dev

类和函数构造函数有何不同

来自分类Dev

c++ 函数的执行与 js 函数有何不同?

来自分类Dev

Java 8方法引用与“真实”函数指针有何不同?

来自分类Dev

ggplot2密度与密度函数有何不同?

来自分类Dev

这两个高阶函数有何不同?

来自分类Dev

Perl Cwd :: cwd和Cwd :: getcwd函数有何不同?

来自分类Dev

haskell中的箭头和函数有何不同?

来自分类Dev

haskell中的箭头和函数有何不同?

来自分类Dev

手动'\ t'转义序列与四个空格有何不同?

来自分类Dev

咖喱函数(带有一个参数)与方法有何不同?

来自分类Dev

普通函数和箭头函数在_proto_构造函数之间有何不同?

来自分类Dev

引用继承的属性/变量时,使用this.X和base.X的行为有何不同?

来自分类Dev

MAP成员函数与Oracle中的Object Type成员函数有何不同

来自分类Dev

指向虚函数的指针与指向非虚函数的指针有何不同?

来自分类Dev

MAP成员函数与Oracle中的Object Type成员函数有何不同

来自分类Dev

双清单复制构造函数:与单清单复制构造函数有何不同?

来自分类Dev

在TypeScript接口上声明函数的多种方法:它们有何不同?

来自分类Dev

WinAPI Shell API与基本API和CRT函数有何不同?

来自分类Dev

R与sum(Dataframe $ columns)/ N中的聚合函数有何不同?

来自分类Dev

函数近似:图块编码与高度离散的状态空间有何不同?

来自分类Dev

scipy.stats.multivariate_normal.pdf与使用numpy编写的同一函数有何不同?

来自分类Dev

在构造函数内部创建的状态内部和外部状态定义的数据有何不同?

来自分类Dev

在函数中调用列与在pandas数据框中在外部调用列有何不同?

来自分类Dev

初始化方法与构造函数加赋值-性能有何不同?(C ++)

来自分类Dev

WinAPI Shell API与基本API和CRT函数有何不同?

来自分类Dev

R与sum(Dataframe $ columns)/ N中的聚合函数有何不同?

Related 相关文章

  1. 1

    这对JavaScript函数有何不同?

  2. 2

    这些C函数有何不同?

  3. 3

    Dart Factory构造函数-与“ const”构造函数有何不同

  4. 4

    类和函数构造函数有何不同

  5. 5

    c++ 函数的执行与 js 函数有何不同?

  6. 6

    Java 8方法引用与“真实”函数指针有何不同?

  7. 7

    ggplot2密度与密度函数有何不同?

  8. 8

    这两个高阶函数有何不同?

  9. 9

    Perl Cwd :: cwd和Cwd :: getcwd函数有何不同?

  10. 10

    haskell中的箭头和函数有何不同?

  11. 11

    haskell中的箭头和函数有何不同?

  12. 12

    手动'\ t'转义序列与四个空格有何不同?

  13. 13

    咖喱函数(带有一个参数)与方法有何不同?

  14. 14

    普通函数和箭头函数在_proto_构造函数之间有何不同?

  15. 15

    引用继承的属性/变量时,使用this.X和base.X的行为有何不同?

  16. 16

    MAP成员函数与Oracle中的Object Type成员函数有何不同

  17. 17

    指向虚函数的指针与指向非虚函数的指针有何不同?

  18. 18

    MAP成员函数与Oracle中的Object Type成员函数有何不同

  19. 19

    双清单复制构造函数:与单清单复制构造函数有何不同?

  20. 20

    在TypeScript接口上声明函数的多种方法:它们有何不同?

  21. 21

    WinAPI Shell API与基本API和CRT函数有何不同?

  22. 22

    R与sum(Dataframe $ columns)/ N中的聚合函数有何不同?

  23. 23

    函数近似:图块编码与高度离散的状态空间有何不同?

  24. 24

    scipy.stats.multivariate_normal.pdf与使用numpy编写的同一函数有何不同?

  25. 25

    在构造函数内部创建的状态内部和外部状态定义的数据有何不同?

  26. 26

    在函数中调用列与在pandas数据框中在外部调用列有何不同?

  27. 27

    初始化方法与构造函数加赋值-性能有何不同?(C ++)

  28. 28

    WinAPI Shell API与基本API和CRT函数有何不同?

  29. 29

    R与sum(Dataframe $ columns)/ N中的聚合函数有何不同?

热门标签

归档