2012-06-27 70 views
4

考虑以下几点:嵌套方法调用和代表之间有什么区别?

1 APPROACH:

public void f3() 
{ 
f2(); 
f1(); 
} 

这...

第二个办法:

class Sample 
{ 
    public delegate void MyDelegate(string s); 
    MyDelegate obj; 

    public Sample() 
    { 
     obj += new MyDelegate(input); 
     obj+=new MyDelegate(something); 
     obj += new MyDelegate(someStaticMethod); 
    } 
} 

当我打电话F3(),它会调用其中列出的功能...当iw时也会发生同样的情况生病调用代表...所以有什么用委托来处理某些事件时,我可以使用第一方法...... 一号方法太封装的方法调用..

+4

如果您使用委托,您可以*委派工作*给其他人。您的用户现在可以提供自定义实现,而不是被硬编码为任何功能。 –

+0

除了使用...两种方式是相似的吗?我的意思是方法会调用的方式是相同的.. ryt? –

回答

6

在委托的情况下,调用未指定附加功能的顺序。

另外,即使在运行期间,也可以从其他对象附加任意数量的函数,而不仅仅是硬编码的函数,如第一种方法。代表使用更广泛。

+1

另外,调试时应该更容易读取堆栈跟踪。 –

+0

+1这是一个很好的答案。我也想提一下,委托是对方法的引用。您只需要在编译时知道签名,而在OP第1种方法中,您需要确切地知道要调用哪些方法。 –

+1

如果你有*必须*以特定顺序运行的函数,那么第一种方法是正确的。否则,它们在概念上是相同的,但第二种在它的功能上更加灵活。 –

1

第一种方法是静态的。委托方法允许您或调用者确定稍后调用的内容。

+0

我会小心使用* static *这个词,以免将它与关键字'static'混淆。 :p –

+0

是的,我得到你的意思...... :)) –

相关问题