事件是否比C#中的虚拟/重写方法更容易缓存代码?

事件是否比C#中的虚拟/重写方法更容易缓存代码?,c#,performance,events,caching,virtual-functions,C#,Performance,Events,Caching,Virtual Functions,在阅读有关的文章时,我想知道在使用C#中的类时,触发和处理事件是否比重写方法更方便缓存(因为其中一个答案指出应该避免使用虚拟方法,至少在C++中是这样),或者有比这两种方法更好的策略吗 我想知道在使用C语言中的类时,触发和处理事件是否比重写方法更容易缓存# 一般来说,不会。事件将需要调用一个单独的类实例,它将位于一个单独的内存位置。这将产生与虚拟方法调用相同(甚至可能更糟)的缓存问题 或者有比这两种方法更好的策略吗 不幸的是,惯用C#往往不支持缓存。为了编写缓存友好的C#代码,您通常希望使用st

在阅读有关的文章时,我想知道在使用C#中的类时,触发和处理事件是否比重写方法更方便缓存(因为其中一个答案指出应该避免使用虚拟方法,至少在C++中是这样),或者有比这两种方法更好的策略吗

我想知道在使用C语言中的类时,触发和处理事件是否比重写方法更容易缓存#

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

或者有比这两种方法更好的策略吗


不幸的是,惯用C#往往不支持缓存。为了编写缓存友好的C#代码,您通常希望使用
struct
而不是
class
,避免虚拟方法,避免事件,避免委托(至少是带有闭包的委托),等等。Rico Mariani有一个nice,详细讨论了其中许多问题。

试着理解为什么虚拟现实不友好缓存。一旦你这么做了,很明显,事情会变得更加不友好。它们解决了完全不同的问题。我看不出这有什么可比性。也许您应该展示一个示例问题,然后使用事件和不使用事件来解决它。那么比较就更有意义了。@Servy,这是因为我创建了一个实现虚拟方法的基表单类,该类在所有派生类中都被重写,但我想知道触发在派生类中实现的事件是否比重写方法更好。