gpt4 book ai didi

c# - 是否可能有太多的匿名代表?

转载 作者:行者123 更新时间:2023-11-30 14:44:02 24 4
gpt4 key购买 nike

最近,我采用了在我的部分代码中进行大量诊断日志记录的模式,它使用了 lambda 表达式/匿名委托(delegate),如下所示:

MyEventManager.LogVerbose( LogCategory.SomeCategory, () => String.Format(msg_string, GetParam1(), GetParam2(), GetParam3() );

请注意,LogVerbose 的第二个参数是一个计算结果为字符串的 lambda 表达式。这样做的原因是,如果没有实际启用详细日志记录,LogVerbose 应该在完成尽可能少的工作后退出,以最大限度地减少对性能的影响。在某些情况下,错误消息字符串的构造可能会占用时间或资源,如果从未对 lambda 表达式求值,则不会导致性能下降。

我想知道在类型系统中乱放如此多的匿名委托(delegate)是否会对应用程序性能产生一些无法预料的后果,或者我是否应该考虑其他任何策略。

最佳答案

应该没问题。特别是,如果你的匿名函数没有捕获任何东西,它会被缓存为一个静态字段(因为它可以)。如果您捕获“this”,那么您最终将创建新的委托(delegate)实例,但它们并不昂贵。

如果您捕获局部变量,那将涉及实例化一个嵌套类型——但我只会担心这个,如果您看到它实际上成为一个问题。与优化一样,首先关注可读性,衡量性能,然后分析它以找出您需要集中精力的地方。

关于c# - 是否可能有太多的匿名代表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1059064/

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