我有一个功能,那就是如果一个列表已经改变了自上次打电话叫,这将是实现这个的最佳方式?
例如:
List<A> OurList = new List<A>();
private void Update()
{
Boolean Changed = //?
if(Changed) CheckList(OurList);
}
Run Code Online (Sandbox Code Playgroud)
我会假设make变量来存储旧列表并进行比较,但是如何将旧列表更新到新列表而不将其全部复制出来?(如果我进行分配,它也会更新"旧列表")
dth*_*rpe 19
使用ObservableCollection<T>而不是List,然后订阅该CollectionChanged事件.
这样,您将被告知何时更改列表而不必扫描数据以确定事后发生的事情.
Hen*_*man 13
最有效的方法是List<>在你自己的类中包装并让所有的变异方法(Add,Remove)设置一个布尔标志.
然后,您的方法可以查看该标志并重置它.
如果您使用的是.NET 4.0,则可以使用ObservableCollection类.(在4.0之前,您需要引用WPF).
创建列表后,只需向CollectionChanged事件添加处理程序即可.