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

Microsoftのドキュメントによると:

EventArgs は、イベント データを含むクラスの基本クラスです。

....

このクラスにはイベント データは含まれません。これは、イベントが発生したときに状態情報をイベント ハンドラーに渡さないイベントによって使用されます。イベント ハンドラーが状態情報を必要とする場合、アプリケーションはこのクラスからクラスを派生させてデータを保持する必要があります。

そうは言っても、そのクラスの最初の開発者は、イベントを処理すると同時に、オブジェクトAddedObjectをイベント ハンドラー メソッドで使用できるようにすることを意図していました。素敵な例については、上記の Web サイトを参照してください。

于 2012-04-26T02:22:41.970 に答える