我对委托的概念还不太熟悉。我了解到它类似于C++中的指针。在其优点中,它提到有效使用委托可以提高性能。 考虑到它是一个指针,它如何提高应用程序的性能呢? 如果有人能用一个简单的例子来解释一下,那就太好了。
委托并不是直接用于提高性能的,而是用于抽象调用。从C++的角度来看,它确实像一个方法指针。大多数委托的用途与性能无关。让我们从一开始就明确这一点。然而,有一个主要的时间可以用它来帮助性能,那就是它允许像元编程这样的场景。代码(通常是库代码)可以根据配置信息在运行时构建复杂的行为链,然后通过任何支持构建IL的API(如Expression、TypeBuilder或DynamicMethod)将该信息编译成一个方法。但是,要调用这样一个动态生成的方法,你需要一个委托,因为从C#编译的静态IL不能引用在那个时候不存在的方法。请注意,另一种实现方式是使用TypeBuilder创建(在运行时)继承自子类或实现已知接口的新类型,然后创建动态生成的类型的实例,该实例可以按照通常的方式转换为预期的API,并正常调用。
代理对应用程序的性能没有显著的正面或负面影响。它们提供了一种将应用程序的不同方面解耦的方法。假设你有这样一种情况:类A调用B.foo()。现在,A与B部分耦合在一起。你可能会遇到这样一种情况:B需要调用A.bar()。现在,你面临着将两者紧密耦合在一起的风险。如果你不是向B公开A,而是将bar作为一个代理提供,那么你就可以消除这种耦合。