c# - event - public delegate void




代表如何改进应用程序的性能? (2)

我对代表概念很陌生。 我知道它和C ++中的指针类似。 它的优点是提到代表的有效使用提高了性能。

考虑到这是一个指针。 它如何提高应用程序的性能?

如果有人可以用一个简单的例子来解释这个,那会很有帮助的。


代表对您的申请表现没有显着的正面或负面影响。 他们提供的是一种将应用程序的各个方面彼此分离的手段。

假设你有一个类A调用B.foo()A现在部分耦合到B 您可能会遇到这种情况, B需要调用A.bar() 。 你现在冒险将两者紧密结合在一起。 如果不是将A暴露给B ,而是将bar作为代理提供,那么您已经删除了这个耦合。


代表并不是直接提高性能 - 而是抽象调用。 用C ++来说,它确实就像一个方法指针。

代表的大部分用途与表现无关 。 让我们从一开始就清楚这一点。

然而,这可以用来帮助性能的一个主要时间是,这允许像元编程的情况。 代码(通常是库代码)可以在运行时基于配置信息构造复杂的行为链,然后通过ExpressionTypeBuilderDynamicMethod (或者基本上可以让你构造IL的任何API)将该信息编译成方法。 但是为了调用这样一个动态生成的方法,您需要一个委托 - 因为您从C#编译的静态IL无法引用当时不存在的方法。

请注意,另一种方法是使用TypeBuilder创建(在运行时)从子类继承或实现已知接口的新类型,然后创建动态生成类型的实例,该实例可以转换为预期的API以通常的方式正常调用。





delegates