c# - 委托(delegate)如何提高应用程序的性能?

标签 c# asp.net delegates

我是代理人概念的新手。我了解到它类似于 C++ 中的指针。在其优点中,它提到有效使用委托(delegate)可以提高性能。

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

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

最佳答案

委托(delegate)不是直接提高性能——它们是关于抽象调用。在 C++ 术语中,它确实像一个方法指针。

委托(delegate)的大部分用途与性能无关。让我们从一开始就明确这一点。

然而,这可以用来帮助提高性能的一个主要时间是它允许像元编程这样的场景。代码(通常是库代码)可以在运行时根据配置信息构造复杂的行为链,然后通过Expression中的任何一个将该信息编译成方法TypeBuilderDynamicMethod(或基本上任何可让您构建 IL 的 API)。但是要调用这样一个动态生成的方法,您需要一个委托(delegate) - 因为从 C# 编译的静态 IL 不能引用不存在的方法时间。

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

关于c# - 委托(delegate)如何提高应用程序的性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20470480/

相关文章:

Kotlin Delegation如何从委托(delegate)对象访问类属性

swift 如何从第二个 vai 协议(protocol)和委托(delegate)模式中的逻辑更新第一个 Controller ?

C#:Unity Photon 不向第二个连接添加物理

asp.net - 如何在 ASP.NET MVC 2 应用程序中显示授权错误消息?

c# - 使用 WKHTMLTOPDF 以 HTML 格式显示图像,但不以 PDF 格式显示图像

c# - 如何使用处理程序显示图像预览

c# - 如何不删除单个特定 session 变量?

c# - 缓存委托(delegate)结果

c# - 如何在C#字符串中将上标字符转换为普通文本

c# - 字符串和字符串有什么区别?