C# 代理 delegate +=的本质
来源:互联网 发布:python cbind 编辑:程序博客网 时间:2024/06/05 17:49
C# 代理或事件中会使用到+=方法注册事件,通过IL查看其本质是使用了System.Delegate.Combine方法
SayDele += new SaySomeDele(SayhelloMethod);
SayDele += new SaySomeDele(sayFuckMethod);
//SayDele = (SaySomeDele)System.Delegate.Combine(new SaySomeDele(SayhelloMethod), SayDele);
//SayDele = (SaySomeDele)System.Delegate.Combine(new SaySomeDele(sayFuckMethod), SayDele);
SayDele("someOne ");
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// 代码大小 88 (0x58)
.maxstack 4
IL_0000: nop
IL_0001: ldsfld class T.JiaDengLearn.SaySomeDele T.JiaDengLearn.Program::SayDele
IL_0006: ldnull
IL_0007: ldftn void T.JiaDengLearn.Program::SayhelloMethod(string)
IL_000d: newobj instance void T.JiaDengLearn.SaySomeDele::.ctor(object,
native int)
IL_0012: call class [mscorlib]System.Delegate [mscorlib]System.Delegate::Combine(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_0017: castclass T.JiaDengLearn.SaySomeDele
IL_001c: stsfld class T.JiaDengLearn.SaySomeDele T.JiaDengLearn.Program::SayDele
IL_0021: ldsfld class T.JiaDengLearn.SaySomeDele T.JiaDengLearn.Program::SayDele
IL_0026: ldnull
IL_0027: ldftn void T.JiaDengLearn.Program::sayFuckMethod(string)
IL_002d: newobj instance void T.JiaDengLearn.SaySomeDele::.ctor(object,
native int)
IL_0032: call class [mscorlib]System.Delegate [mscorlib]System.Delegate::Combine(class [mscorlib]System.Delegate,
class [mscorlib]System.Delegate)
IL_0037: castclass T.JiaDengLearn.SaySomeDele
IL_003c: stsfld class T.JiaDengLearn.SaySomeDele T.JiaDengLearn.Program::SayDele
IL_0041: ldsfld class T.JiaDengLearn.SaySomeDele T.JiaDengLearn.Program::SayDele
IL_0046: ldstr "someOne "
IL_004b: callvirt instance void T.JiaDengLearn.SaySomeDele::Invoke(string)
IL_0050: nop
IL_0051: call int32 [mscorlib]System.Console::Read()
IL_0056: pop
IL_0057: ret
} // end of method Program::Main
- C# 代理 delegate +=的本质
- C#中的代理(Delegate)
- C#中的代理(Delegate)
- C#中的代理(Delegate)
- C#中的代理(Delegate)
- C#中的代理(Delegate)
- C#中的代理(Delegate)
- C#中的代理(delegate)_C#教程
- C#中的代理(delegate)_C#教程
- C#里委托/代理delegate 一例
- UIScrollView的代理(delegate)
- UIScrollView的代理(delegate)
- 代理Delegate的小应用
- 简单的delegate代理使用
- C# 的 Delegate Type
- C# 的 Delegate Type
- C#的委托 delegate
- 关于C#的delegate
- 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
- 制作Windows服务和安装程序(C#版)
- 电子书包-真能承受得住考验吗?
- C语言的inline关键字
- jdbc连接sql数据库
- C# 代理 delegate +=的本质
- 大数据时代的理解
- instruments 性能检测工具
- 使用log4j的邮件功能
- 冒泡法排序
- 下载点东西都这么无奈...
- java压缩文件并对压缩包进行加密
- DOM events
- Bambook大赛ITeye社区推广经验谈