Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 事件添加和删除实现详细信息_C#_Performance_Events - Fatal编程技术网

C# 事件添加和删除实现详细信息

C# 事件添加和删除实现详细信息,c#,performance,events,C#,Performance,Events,我正在开发一个有很多性能关键代码的应用程序。当查看我的代码时,我注意到我也有很多关于具有许多调用的事件的+=和-=,因此我问自己(现在也是你)如何实现+=和-=以及当有很多调用时有多快。在下面,事件是一个事件委托列表。添加新事件在性能上类似于调用List.Add()(通常为O(1)),而删除委托相当于List.Remove(),即O(n),其中n是列表中的委托数 (这并不一定意味着委托实际上是通过一个列表来实现的,但是性能特征是相同的。)请看这里:因此,每次更新时添加和删除大量调用时,实际上性能

我正在开发一个有很多性能关键代码的应用程序。当查看我的代码时,我注意到我也有很多关于具有许多调用的事件的
+=
-=
,因此我问自己(现在也是你)如何实现
+=
-=
以及当有很多调用时有多快。

在下面,事件是一个事件委托列表。添加新事件在性能上类似于调用
List.Add()
(通常为O(1)),而删除委托相当于
List.Remove()
,即O(n),其中n是列表中的委托数


(这并不一定意味着委托实际上是通过一个
列表来实现的,但是性能特征是相同的。)

请看这里:因此,每次更新时添加和删除大量调用时,实际上性能很差。