gpt4 book ai didi

c# - .NET 中的 JIT 编译器和事件处理程序

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:41 24 4
gpt4 key购买 nike

我对 JIT 编译器的理解非常基础。据我了解,JIT 编译器第一次遇到一段 MSIL 代码时,它会被编译成 native 代码并保存在内存中供以后使用(因此 JIT 编译器不必再次编译相同的 MSIL 代码)。

事件处理器的思路是一样的吗?当应用程序中发生事件时,JIT 编译器是否会在运行时为该事件编译事件处理程序中的代码?如果是,编译后的 native 代码是否被缓存?

最佳答案

Is it the same idea for event handlers?

事件处理程序只是一个委托(delegate),它又总是引用一个方法。由于 JIT 将编译一个方法并将其缓存,因此所有事件处理程序都会发生同样的事情,因为它们的底层代码只是一个方法。

如果您指的是使用 lambda expression 定义和编写的事件处理程序,即:

SomeEvent += (o,e) => DoFoo();

在内部,这仍然是一个正常的方法。 编译器 将 lambda 转换为已编译 IL 中的普通方法。 anonymous methods也是如此.

关于c# - .NET 中的 JIT 编译器和事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18839477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com