0

ここでのC#4.0仕様のイベントの例は次のように述べています

"The List<T> class declares a single event member called Changed, which indicates that a new item has been added to the list. The Changed event is raised by the OnChanged virtual method, which first checks whether the event is null (meaning that no handlers are present). The notion of raising an event is precisely equivalent to invoking the delegate represented by the event—thus, there are no special language constructs for raising events."

Changedリフレクターのイベントが見つかりません。

4

4 に答える 4

2

List<T>このステートメントは、本で定義されているクラスに当てはまります。.NetFrameworkとは何の関係もありませんclass System.Collection.Generic.List<T>

はい、本からクラスをコピーすると、変更イベントが発生します。

于 2012-05-12T02:17:31.783 に答える
1

ドキュメントには、にイベントが存在することを示すものはありませんList<T>

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

于 2012-05-12T02:13:01.493 に答える
0

あなたが本当にそのようなリストを探しているなら、BindingList<T>(ListChangedを持っている)またはObservableCollection<T>

于 2012-05-12T03:01:41.033 に答える
0

Listから継承して、次のような独自のハンドラーを追加できます。

using System;
using System.Collections.Generic;

namespace test {
    class Program {

        class MyList<T> : List<T> 
        {
            public event EventHandler OnAdd;

            public void Add(T item) 
            {
                if (null != OnAdd)
                    OnAdd(this, null);

                base.Add(item);
            }
        }

        static void Main(string[] args) 
        {
            MyList<int> l = new MyList<int>();
            l.OnAdd += new EventHandler(l_OnAdd);
            l.Add(1);
        }

        static void l_OnAdd(object sender, EventArgs e) 
        {
            Console.WriteLine("Element added...");
        }
    }
}
于 2012-05-12T02:12:19.353 に答える