在哪里使用活动和代表?

kar*_*yan 5 c# delegates

我在很多项目中都使用过活动和代表,但我仍然怀疑在项目中使用事件和代表的地方以及委托和事件之间的区别.任何人都可以解释一下吗?

Unm*_*kar 8

代表是可以封装方法调用一个类型.如果要将方法视为对象并将其传递,则应使用委托.

一个事件仅仅是一个暴露一个委托哪个类以外的任何代码可以将它们的处理程序,但不能调用委托财产的方式.如果将委托公开为公共属性,则类外部的代码不仅可以附加其处理程序,还可以调用委托.

此外,事件还允许您添加删除方法,这些方法在处理程序附加\分离时调用,就像公共属性的getter和setter一样,允许您更好地控制进程.

当您希望其他类订阅您的类中的事件并在发生事件时收到通知时,您应该使用事件.

public delegate void MyMessageHandlerType(string message);

public class EventTest
{
    public event MyMessageHandlerType MessageEvent
    {
        add { } // invoked when MessageEvent += SomeMethod
        remove { } // invoked when MessageEvent -= SomeMethod
    }
}
Run Code Online (Sandbox Code Playgroud)