gpt4 book ai didi

c# - 调用/创建委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 20:54:58 24 4
gpt4 key购买 nike

大家好,

我注意到有两种方法可以调用/创建委托(delegate)

MrDel MyDelegate = new MrDel(Mathmetics.Method);

MrDel MyDelegate = Mathmetics.Method;

所以我的问题是这两种方式有什么区别?为什么我需要使用第一个,如果第二个更短打字而且他们似乎在做同样的事情?通过学习一些教程,我看到人们要么使用第一种方式,要么使用第二种方式,但他们并没有真正解释为什么。能否帮我说清楚或指出我可以在哪里阅读,谢谢。

完整代码:

class Program
{
public delegate void MrDel(int arg, ThingsToDo e);

static void Main(string[] args)
{
MrDel MyDelegate = new MrDel(Mathmetics.Method);
//MrDel MyDelegate = Mathmetics.Method;


Method(MyDelegate);

Console.Read();
}

最佳答案

它们是一样的——第二个是Syntactic Sugar为了第一。为了确认我查看了为两者生成的 IL,它们是相同的:

IL_0001:  ldarg.0     
IL_0002: ldftn UserQuery.Method
IL_0008: newobj UserQuery+MrDel..ctor
IL_000D: stloc.0 // MyDelegate

Method:
IL_0000: nop
IL_0001: ret

MrDel.Invoke:

MrDel.BeginInvoke:

MrDel.EndInvoke:

MrDel..ctor:

关于c# - 调用/创建委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com