2

阅读此 SO question 中的缓存友好代码,我想知道在使用 C# 中的类时,触发和处理事件是否比覆盖方法对缓存更友好(因为其中一个答案表明应该避免使用虚拟方法,至少在 C++ 中),还是有比这两种方法更好的策略?

4

1 回答 1

5

我想知道在 C# 中使用类时,触发和处理事件是否比覆盖方法对缓存更友好

一般来说,没有。事件将需要调用一个单独的类实例,该类实例将位于一个单独的内存位置。这将具有与虚拟方法调用相同(甚至可能更糟)的缓存问题。

还是有比这两种方法更好的策略?

不幸的是,惯用的 C# 往往对缓存不友好。为了编写缓存友好的 C# 代码,您通常希望使用structover class、避免虚拟方法、避免事件、避免委托(至少具有闭包的委托)。这些问题详细。

于 2013-06-03T19:25:02.090 回答