
在WPF , silverlight ,WP7中经常会用到List<T>和ObservableCollection<T>。这里简单讲一下他们之间的相互转换。
1.List<T>的简单介绍:
List<T>代表的是强类型的Ojbect集合,可以通过索引访问并且提供了查找、排序以及 *** 作此集合的方法。List基本上和ArrayList相同,它用数组的方式实现了接口IList并且他的大小可以根据需要来自动增加。
List<T>的缺点
在使用ASP.NET开发时,我们简单的使用DataSource和DataBind来绑定数据,但是在Silverlight中就没有那么简单了。在ASP.NET中,绑定 *** 作只是单向的。绑定 *** 作一旦完成如果再想改变值的话,你必须得d出一个已经赋值需要修改的对话框或者直接在表单上修改,最后再调用方法DataBind,这样的 *** 作特别的麻烦。
2.ObservableCollection的介绍:
ObservableCollection是动态数据集合并且当集合中新增、修改或者删除项目时,或者集合被刷新时,都有通知机制(通过实现接口INotifyCollectionChanged)。
ObservableCollection的缺点
当集合中的属性中改变时没有提供任何的通知机制。在程序运行的过程中,通过新增、删除或者改变ObservableCollection集合中的数据时,只有新增和删除数据时,UI集合(DataGrID)中的数据才改变。但是在修改集合中已经存在的数据时UI层的数据却不能改变。
3.这里不得不提一下子INotifyPropertyChanged,它不是集合,只是一个接口。在类中提供一个事件PropertyChanged,当属性的值发生改变时通知客户端。如果对象的状态发生改变时(新增、修改、删除)将触发事件PropertyChange指向那些已经发生改变的集合。
ObservableCollection能通知他变化了也正是因为它实现了INotifyPropertyChanged接口。只是微软给出了具体的实现,如果要写List需要自己实现 INotifyPropertyChanged接口,
说了这么多,言归正传,对于它们互换: T tList = new List(tObjectStruct .ToList()); ObservableCollection tObjectStruct = new ObservableCollection(tList); 都在构造函数中即可完成 也可以: tList.ForEach(p => tObjectStruct.Add(t));
总结以上是内存溢出为你收集整理的List和ObservableCollection的相互转化全部内容,希望文章能够帮你解决List和ObservableCollection的相互转化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)