1

这是自定义事件参数的代码。我对这些的使用以及它们的作用感到困惑。我无法理解这个属性public object AddedObject { get; private set; },代码在这里:

public class ObjectAddedEventArgs : EventArgs
{
    public ObjectAddedEventArgs(object addedObject)
    {
        AddedObject = addedObject;
    }

    public object AddedObject { get; private set; }
}

我无法理解添加对象的 get 和 set 属性的使用。请给我解释一下。

4

3 回答 3

1

AddedObject属性就是所谓的“自动属性”,这意味着 C# 编译器将生成一个私有变量来保存该属性的值。“get”是允许您读取属性值的机制。“设置”是允许您设置属性值的机制,尽管在这种情况下,由于设置是private您无法设置值。这转换为大致如下所示的代码:

private object _AddedObject;
public object AddedObject
{
   get { return this._AddedObject; }
   private set { this._AddedObject = value; }
}

类本身(ObjectAddedEventArgs类)用于向事件处理程序提供附加数据(AddedObject值),该事件处理程序可能会访问该数据并对其进行处理,作为其对事件的响应的一部分。

于 2012-04-26T02:25:18.240 回答
0

当你像这样声明你的事件时的好事

  event EventHandler<ObjectAddedEventArgs> MyObjectAddedEvent;

您可以轻松地以弱方式订阅它

    myObjectInstance.MyObjectAddedEvent += new EventHandler<ObjectAddedEventArgs>(MyObjectAddedEventMethod).MakeWeak(eh => d.MyObjectAddedEvent -= eh);

    private void MyObjectAddedEventMethod(object sender, ObjectAddedEventArgseventargs)
    {
        //do something with the event args
    }

你在这里找到的弱点。

于 2012-04-26T08:06:35.620 回答
0

根据微软的文档

EventArgs 是包含事件数据的类的基类。

……

此类不包含事件数据;它由在引发事件时不将状态信息传递给事件处理程序的事件使用。如果事件处理程序需要状态信息,则应用程序必须从此类派生一个类来保存数据。

话虽如此,该类的原始开发人员打算处理事件,同时使对象AddedObject可用于事件处理程序方法。请参阅上面的网站以获取一个很好的示例。

于 2012-04-26T02:22:41.970 回答