最近,我已具有很多诊断日志记录在我的代码部分的模式,即利用lambda表达式/匿名委托的,像这样:是否有可能拥有太多的匿名代表?
MyEventManager.LogVerbose(LogCategory.SomeCategory,() => String.Format(msg_string, GetParam1(), GetParam2(), GetParam3());
注意,第二个参数LogVerbose是一个lambda表达式,其值为一个字符串。原因是如果详细日志记录实际上没有启用,LogVerbose应该退出尽可能少的工作,以便将性能影响降至最低。在某些情况下,错误消息字符串的构造可能需要时间或资源,并且如果lambda表达式从未被评估过,则不会发生性能损失。
我想知道是否抛弃类似这样的匿名代理的类型系统会对应用程序性能产生一些无法预料的后果,或者是否应该考虑其他任何策略。
这是我怀疑的,这是技术上的理由。 – jlew 2009-06-29 17:18:18