我是代表们的新概念。我已经知道它类似于C ++中的指针。在其优势方面,它提到有效使用代表可以提高性能。
考虑到它是一个指针。它如何改善应用程序的性能?
如果有人能用一个简单的例子来解释这一点,那将会有所帮助。
答案 0 :(得分:4)
代表们不是直接关于提高性能 - 它们是关于抽象调用的。用C ++术语来说,它确实就像一个方法指针。
代表的大部分用途与效果无关。让我们从一开始就明确这一点。
然而,这可以用来帮助提高性能的一个主要时间是,它允许像元编程这样的场景。代码(通常是库代码)可以根据运行时的配置信息构建复杂的行为链,然后通过Expression
,TypeBuilder
中的任何一个将该信息编译成方法或DynamicMethod
(或基本上任何允许您构建IL的API)。但是要调用这样一个动态生成的方法,你需要一个委托 - 因为从C#编译的静态IL不能引用不存在的方法 at时间。
请注意,执行此操作的另一种方法是使用TypeBuilder
创建(在运行时)从子类继承的新类型或实现已知接口,然后创建动态生成类型的实例,可以通常的方式强制转换为预期的API并正常调用。
答案 1 :(得分:2)
答案 2 :(得分:2)
代表对您的申请表现没有重大的正面或负面影响。它们提供的是将应用程序的各个方面相互分离的方法。
假设您遇到班级A
拨打B.foo()
的情况。 A
现已部分与B
相关联。然后,您可能会遇到B
需要致电A.bar()
的情况。你现在冒险将两者紧密结合在一起。如果不是将A
公开给B
,而是提供bar
作为委托,那么您已删除了该耦合。