扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:谢启东编译 来源:天极开发 2007年11月14日
关键字:
using namespace System; delegate void D(int x); ref class Test { String^ objName; public: Test(String^ objName) { this->objName = objName; } void M(int i) { Console::WriteLine("Object {0}: {1}", objName, i); } }; void ProcessList(D^ del, int value, Object^ objToExclude); int main() { /*1*/ Test^ t1 = gcnew Test("t1"); D^ cd1 = gcnew D(t1, &Test::M); /*2*/ Test^ t2 = gcnew Test("t2"); D^ cd2 = gcnew D(t2, &Test::M); /*3*/ Test^ t3 = gcnew Test("t3"); D^ cd3 = gcnew D(t3, &Test::M); /*4*/ D^ list = cd1 + cd2 + cd3 + cd2; /*5a*/ ProcessList(list, 100, nullptr); /*5b*/ ProcessList(list, 200, t1); /*5c*/ ProcessList(list, 300, t2); /*6a*/ D^ cd4 = cd1 + cd2; /*6b*/ D^ cd5 = (D^)cd4->Clone(); /*6c*/ ProcessList(cd4, 5, nullptr); /*6d*/ ProcessList(cd5, 6, nullptr); } void ProcessList(D^ del, int value, Object^ objToExclude) { /*7*/ if (del == nullptr) { return; } /*8*/ else if (objToExclude == nullptr) { del(value); } else { /*9*/ array<Delegate^>^ delegateList = del->GetInvocationList(); for each (Delegate^ d in delegateList) { /*10*/ if (d->Target != objToExclude) { /*11*/ ((D^)d)(value); } } } } |
Object t1: 100 Object t2: 100 Object t3: 100 Object t2: 100 Object t2: 200 Object t3: 200 Object t2: 200 Object t1: 300 Object t3: 300 |
Object t1: 5 Object t2: 5 Object t1: 6 Object t2: 6 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者