扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:谢启东编译 来源:天极开发 2007年11月12日
关键字:
delegate void D1(); delegate void D2(); public struct A { static void M1() { /* ... */ } static void M2() { /* ... */ } }; void X(D1^ m) { /* ... */ } void Y(D2^ n) { /* ... */ } int main() { D1^ d1; /*1*/ d1 = gcnew D1(&A::M1); //兼容 /*2*/ d1 = gcnew D1(&A::M2); //兼容 D2^ d2; /*3*/ d2 = gcnew D2(&A::M1); //兼容 /*4*/ d2 = gcnew D2(&A::M2); //兼容 /*5*/ d1 = d2; //不兼容 /*6*/ d2 = d1; //不兼容 /*7*/ X(d1); //兼容 /*8*/ X(d2); //不兼容 /*9*/ Y(d1); //不兼容 /*10*/ Y(d2); //兼容 } |
using namespace System; delegate void D(int x); ref struct Actions { static void F1(int i) { Console::WriteLine("Actions::F1: {0}", i); } static void F2(int i) { Console::WriteLine("Actions::F2: {0}", i); } void F3(int i) { Console::WriteLine("instance of Actions::F3: {0}", i); } }; int main() { /*1*/ D^ cd1 = gcnew D(&Actions::F1); //包含F1的调用列表 cd1(10); Actions::F1: 10 /*2*/ D^ cd2 = gcnew D(&Actions::F2); //包含F2的调用列表 cd2(15); Actions::F2: 15 /*3*/ D^ cd3 = cd1 + cd2; //包含F1 + F2的调用列表 cd3(20); Actions::F1: 20 Actions::F2: 20 /*4*/ cd3 += cd1; //包含F1 + F2 + F1的调用列表 cd3(25); Actions::F1: 25 Actions::F2: 25 Actions::F1: 25 Actions^ t = gcnew Actions(); D^ cd4 = gcnew D(t, &Actions::F3); /*5*/ cd3 += cd4; //包含F1 + F2 + F1 + t->F3的调用列表 cd3(30); Actions::F1: 30 Actions::F2: 30 Actions::F1: 30 instance of Actions::F3: 30 /*6*/ cd3 -= cd1; //移除最右边的F1 cd3(35); //调用F1、F2,t->F3 Actions::F1: 35 Actions::F2: 35 instance of Actions::F3: 35 /*7*/ cd3 -= cd4; //移除t->F3 cd3(40); //调用F1、F2 /*8*/ cd3 -= cd1; //移除F1 cd3(45); //调用F2 /*9*/ cd3 -= cd2; //移除F2,调用列表现在为空 /*10*/Console::WriteLine("cd3 = {0}", (cd3 == nullptr ? "null" : "not null")); } Actions::F1: 40 Actions::F2: 40 Actions::F2: 45 cd3 = null |
using namespace System; delegate void D(int x); void F1(int i) { Console::WriteLine("F1: {0}", i); } void F2(int i) { Console::WriteLine("F2: {0}", i); } int main() { D^ cd1 = gcnew D(&F1); D^ cd2 = gcnew D(&F2); /*1*/ D^ list1 = cd1 + cd2; // F1 + F2 /*2*/ D^ list2 = cd2 + cd1; // F2 + F1 D^ cd3 = nullptr; /*3a*/ cd3 = list2 + list1; // F2 + F1 + F1 + F2 cd3(10); /*3b*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 cd3(20); /*4a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*4b*/ cd3 -= cd1 + cd2; // F2 + F1 cd3(30); /*5a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*5b*/ cd3 -= cd2 + cd2; // F1 + F1 cd3(40); /*6a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*6b*/ cd3 -= cd2 + cd1; // F1 + F2 cd3(50); /*7a*/ cd3 = list1 + list2; // F1 + F2 + F2 + F1 /*7b*/ cd3 -= cd1 + cd1; // F1 + F2 + F2 + F1 cd3(60); } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者