gpt4 book ai didi

c# - 使用匿名方法是否有任何开销?

转载 作者:太空狗 更新时间:2023-10-29 20:17:54 27 4
gpt4 key购买 nike

我想知道在创建后台工作程序时使用匿名方法是否会产生任何开销。

例如:

public void SomeMethod()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (sender, e) =>
{
//large amount of code
}

worker.RunWorkerAsync();
}

与在单独的方法中定义//large amount of code 相比,上面的示例会更好还是更坏?

在线定义后台工作方法是否会产生任何开销,特别是如果经常调用 SomeMethod() 时?

最佳答案

当您从它们创建委托(delegate)时,命名方法和匿名方法的处理方式略有不同。

匿名方法的委托(delegate)被缓存,因此检查委托(delegate)是否已存在于缓存中的开销很小。另一方面,如果多次运行该方法,它将重用缓存的委托(delegate)而不是创建新委托(delegate)。

命名方法的委托(delegate)不会缓存,因此每次都会创建。

除此之外没有区别。匿名方法将在编译时创建,并像常规方法一样存在于代码中,只是名称只有编译器知道。

关于c# - 使用匿名方法是否有任何开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9394950/

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