C#接口与泛型
IList<qc_fymczdInfo>A=newList<qc_fymczdInfo>();List<qc_fymczdInfo>B=newList<qc_fymczd...
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
ObservableCollection<qc_fymczdInfo> C = new ObservableCollection<qc_fymczdInfo>();
A.Add((qc_fymczdInfo)((Image)sender).Tag);//这里A可以为B或者C
【qc_fymczdInfo为实体】
*通俗易懂*地说出它们的区别,和什么时候用哪个最好??? 展开
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
ObservableCollection<qc_fymczdInfo> C = new ObservableCollection<qc_fymczdInfo>();
A.Add((qc_fymczdInfo)((Image)sender).Tag);//这里A可以为B或者C
【qc_fymczdInfo为实体】
*通俗易懂*地说出它们的区别,和什么时候用哪个最好??? 展开
6个回答
展开全部
第一种
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
只是想创建一个基于接口IList 的对象的实例,只是这个接口是由List类实现的。所以它只是希望使用到IList 接口规定的功能而已
第二种
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
是想创建一个List对象实例 ,而且需要使用到List类的全部功能,进行相关操作。
什么时候用:
看情况使用,如果只是简单的数据绑定和显示第一种足够,如果要进行排序等复杂的功能,就得用第二种.
效率当然是第一种高了,但功能少,第二种效率差那么一点,但功能多。
楼主去把接口的定义,和如何实现接口相关资料去看看,就自然明白了
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
只是想创建一个基于接口IList 的对象的实例,只是这个接口是由List类实现的。所以它只是希望使用到IList 接口规定的功能而已
第二种
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
是想创建一个List对象实例 ,而且需要使用到List类的全部功能,进行相关操作。
什么时候用:
看情况使用,如果只是简单的数据绑定和显示第一种足够,如果要进行排序等复杂的功能,就得用第二种.
效率当然是第一种高了,但功能少,第二种效率差那么一点,但功能多。
楼主去把接口的定义,和如何实现接口相关资料去看看,就自然明白了
展开全部
IList是一个接口,A是用List这个子类实例化为一个父类。
B就是普通的实例化为一个List的实例出来。
ObservableCOllection接触的不是很多。
使用上的话List用在顺序存储,不需要频繁的增删集合成员的性能更好。
WarthOfHeaven补充的没错,ObservableCollection多了一个通知特性,具体使用哪个,看你的项目需求了!
B就是普通的实例化为一个List的实例出来。
ObservableCOllection接触的不是很多。
使用上的话List用在顺序存储,不需要频繁的增删集合成员的性能更好。
WarthOfHeaven补充的没错,ObservableCollection多了一个通知特性,具体使用哪个,看你的项目需求了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
list<T>与ObservableCollection<T>的用法基本上是一样的。
区别:
list<T>:
当T继承于INotifyPropertyChanged时,如果list<T>中的属性发生改变,则通知UI属性值已发生改变。但当list<T>添加一项时,list<T>就无法通知前端UI了(此时,ObservableCollection<T>闪亮登场)。
ObservableCollection<T>:
当ObservableCollection<T>添加一行时,会自动通知绑定该ObservableCollection<T>的控件并做相应修改。如果希望当ObservableCollection<T>中的属性发生改变时通知UI,则T也需要继承于INotifyPropertyChanged。
区别:
list<T>:
当T继承于INotifyPropertyChanged时,如果list<T>中的属性发生改变,则通知UI属性值已发生改变。但当list<T>添加一项时,list<T>就无法通知前端UI了(此时,ObservableCollection<T>闪亮登场)。
ObservableCollection<T>:
当ObservableCollection<T>添加一行时,会自动通知绑定该ObservableCollection<T>的控件并做相应修改。如果希望当ObservableCollection<T>中的属性发生改变时通知UI,则T也需要继承于INotifyPropertyChanged。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
IList是爸爸,List是儿子.
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
相当于,爸爸指向儿子.
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
相当于儿子指向儿子(儿子就是儿子);
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
这种方法更能用一些.因为同样的爸爸,可以指向其他类型的儿子.B的使用就限定了儿子类型不能变更.
ps:
ObservableCollection是silverlight中的,与本题目的理解无关.
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
相当于,爸爸指向儿子.
List<qc_fymczdInfo> B = new List<qc_fymczdInfo>();
相当于儿子指向儿子(儿子就是儿子);
IList<qc_fymczdInfo> A = new List<qc_fymczdInfo>();
这种方法更能用一些.因为同样的爸爸,可以指向其他类型的儿子.B的使用就限定了儿子类型不能变更.
ps:
ObservableCollection是silverlight中的,与本题目的理解无关.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询