2013-07-29 28 views
0

如果我有这样的代码:c#中委托数据结构中的+ =/- =均值是多少?

genetic = new Genetic(); 
genetic.foundNewBestGroupTour += new Genetico.NewBestGroupTourEventHandler(genetico_foundNewBestGroupTour); 

什么是+=吗?

genetic.foundNewBestGroupTour -= new Genetico.NewBestGroupTourEventHandler(genetico_foundNewBestGroupTour); 

-=是做什么用的?

+0

请阅读http://csharpindepth.com/Articles/Chapter2/Events.aspx –

回答

5

阅读上events

+=运营商在这种情况下调用事件add访问者,而-=调用remove访问者。这通常被称为订阅取消订阅到事件。

实现事件的常用方法是拥有一个支持多播委托的支持字段,在这种情况下,类型为Genetico.NewBestGroupTourEventHandler。所提到的访问者在这个多播委托字段的“调用列表”中添加和删除。

0

它们是用于添加和删除事件的编译器缩写。

+1

速记,是的,但也是在C#中执行此操作的唯一合法语法(无视反射)。 –

+0

我想我的意思是“编译速记”。我必须告诉我当地的barrista让我早上的咖啡变得更强壮:) –

1

它用于订阅/取消订阅(绑定/取消绑定)到一个事件。

genetic.foundNewBestGroupTour += genetico_foundNewBestGroupTour 

订阅人数(绑定)的事件处理程序,以便每当foundNewBestGroupTour事件针对genetic提出的方法genetico_foundNewBestGroupTour将被调用。

genetic.foundNewBestGroupTour -= genetico_foundNewBestGroupTour; 

取消订阅(取消绑定)处理程序。执行此代码后,将在genetic上发生foundNewBestGroupTour事件时不再调用方法genetico_foundNewBestGroupTour

进一步阅读