C# 事件和委托搞不明白

来源:百度知道 编辑:UC知道 时间:2024/06/07 05:02:41
我看到一个类是这样定义的,但是运行的时候会报MailListChanged在类中已定义,我看不明白private static EventHandler MailListChanged;和public static event EventHandler MailListChanged{} 是怎么回事.应该怎么修改?

public class Mail
{
private static DataSet dataSet = new DataSet("邮件集");
private static DataTable dataTable = new DataTable("邮件");
private static EventHandler MailListChanged;
private static decimal timeStamp;

public static event EventHandler MailListChanged
{
[MethodImpl(MethodImplOptions.Synchronized)]
add
{
MailListChanged = Delegate.Combine(MailListChanged, value);
}
[MethodImpl(MethodImplOptions.Synchronized)]
remove
{
MailListChanged = Delegate.Remove(MailListChanged, value);
}
}
jiangfeng0827

那这个类应该怎么修改呢?

哦 这个也许我知道

之前的private static EventHandler MailListChanged;
//是一个私有的静态成员变量;
那几个都是类的成员变量 成员变量可以是普通变量 引用变量或者是方法

而private static EventHandler MailListChanged{}是该类的一个属性 对应变量private static EventHandler MailListChanged;

属性是对类的成员变量的封装 起到保护字段的效果(因为封装以后不能直接对字段值进行操作 而是通过属性来赋予或得到字段的值)

而在您的代码中该成员变量和属性同名 所以报MailListChanged在类中已定义的异常 只要将该变量或者该变量的属性改下名字就可以了

只好拿两分了,事件和委托没用过,我都学了几年了,还没用过

private static EventHandler MailListChanged
public static event EventHandler MailListChanged

这是两个不同的EventHandler吧,为什么用同样的名字呢?

事件本质上是一个异步调用。private static EventHandler MailListChanged 是定义一个内部变量。‘

public static event EventHandler MailListChanged 是定义该类一个的属性。