返回首页

在C#中的代表:
委托是类型安全的封装/封装anbsp方法。这是"函数指针在C / C相似,但它是类型安全的。 当使用一个Delegate
时使用委托: 事件的设计模式。封装一个静态方法,这是可取的。呼叫者无需访问其他属性,方法,实施方法上的对象或接口。所需容易组成。A类可能需要一个以上的执行方法。
有一个很好的例子上,我最近引用的书。
"考虑你的意志,你的最后遗嘱和遗嘱。它是一组指令"支付账单,向慈善机构捐款,离开我的房地产猫,?例如。你写之前死亡,而留在一个适当的安全的地方。您去世后,你的律师会(希望!)对这些指令的行为。"
以委托进行的,需要以下四件事发生。*委托类型需要申报,必须有一个方法包含要执行的代码*必须创建一个委托实例的委托实例必须被调用。
声明委托类型委托typeDeclaration指定什么样的行动可以代表该类型的实例。
E.g":

delegate void MySampleDelegate(string zParameter)

如果我们正在创建的上述委托的一个实例,我们应该有一个字符串参数和返回类型为void的方法。
代码包含到executeThere方法应该是委托签名匹配的方法。方法可以是静态或非静态。我将举两个例子来说明一个静态方法和非静态方法。我会用以下两种方法在"DelegateClass"类。
E.g":{C}
创建一个委托instanceWhen创建委托实例cannbsp静态方法直接传递。但非静态方法的一个实例被创建,并通过委托。
E.g: NBSP [静态方法]
MySampleDelegate delMethodA = new MySampleDelegate(

    DelegateClass.MySampleDelegateMethodStatic);

E.g: NBSP [非静态的方法]
或者{的C4}
调用委托methodIt调用委托实例的Invoke方法的问题。
E.g":{C5的}
下面是完整的源代码上面的例子。我曾用一个控制台应用程序来说明这一点:{5233}
,当你运行你的应用将得到以下输出:
{S0的}
,而不是使用单独的委托实例,你可以结合和执行代表。我们必须使用Delegate类中的"结合"的方法。为了说明这一点,我会改变我DelegateClass"如下所示:{C7-}
要创建实例,并调用:{C8的}
或者
MySampleDelegate D, deligateA, deligateB, deligateC;



            deligateA = new DelegateClass().MySampleMethodA;

            deligateB = new DelegateClass().MySampleMethodB;

            deligateC = new DelegateClass().MySampleMethodC;



            D = deligateA + deligateB + deligateC;



            D("Parameter X");


完整的源代码:{C10的}
当你运行应用程序时,你会得到下面的输出:
{S}

回答

评论会员: 时间:2