当前位置:编程学习 > C#/ASP.NET >>

List与IList有什么区别?

在DAL层中我这样写的:没有报错
  //按照sql语句查询对象
        public IList<GroupsInfo> SelectGroupsBySql(string SqlString,params SqlParameter[] para)
        {
            List<GroupsInfo> list = new List<GroupsInfo>();
            SqlDataReader reader = null;
            try
            {
                reader = DataBase.ExecuteReader(DataBase.ConnectionString, SqlString, para);


在BLL层我这样写的就报错呢。
  public IList<GroupsInfo> SelectGroupsBySql(string SqlString, params SqlParameter[] para)
        {
            List<GroupsInfo> list = gs.SelectGroupsBySql(SqlString,para);
            return list;
        }
报的错误是:
错误 3 无法将类型“System.Collections.Generic.IList<LogModel.GroupsInfo>”隐式转换为“System.Collections.Generic.List<LogModel.GroupsInfo>”。存在一个显式转换(是否缺少强制转换?) E:\工作软件\my\其他\LogManageSystem\LogBLL\GroupsManager.cs 34 37 LogBLL
请教大虾们。。。。。。。。99我 --------------------编程问答-------------------- 一个接口一个类,没什么区别吧.
--------------------编程问答-------------------- 你dal层不报错????? --------------------编程问答-------------------- public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
}IList 泛型接口是 ICollection 泛型接口的子代,
执行效果好并且是类型安全的
--------------------编程问答-------------------- 说的好!
引用 3 楼 wuyq11 的回复:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
}IList 泛型接口是 ICollection 泛型接口的子代,
执行效果好并且是类型安全的
--------------------编程问答--------------------     BLL中返回类型是一个接口,你return 时候要返回一个接口类型,你那是return list;返回的是一个
GroupsInfo集合。 --------------------编程问答-------------------- 你可以吧一个 list<s> 转为 ilist<s>
但你不能把ilist<s> 转为 list<s>
--------------------编程问答-------------------- 楼主搜索一下关于继承,多态方面的内容。 --------------------编程问答--------------------
引用 1 楼 flyerwing 的回复:
一个接口一个类,没什么区别吧.


就是接口和类的区别:)
实现接口的类可以被隐式转换为接口,如第一个例子,但接口不可以被隐式转换为类,这就是第二个例子出错的原因,你的gs.SelectGroupsBySql(SqlString,para)返回的是一个IList<T>泛型对象吧? --------------------编程问答-------------------- list 是类,继承自ilist 就知道这么多了。至于你的报错,你dal中是Ilsit 到bll用Ilsit接受。不能用list 接受 --------------------编程问答-------------------- IList是接口
List是类
List实现了IList接口 --------------------编程问答--------------------
引用 6 楼 whycom 的回复:
你可以吧一个 list<s> 转为 ilist<s>
但你不能把ilist<s> 转为 list<s>
 现实上 这个现象是对的 --------------------编程问答-------------------- 实际是对,但语言上是不允许的,如果实际上是的话,所以要求你是一个强制转换
例如 有一个类  动物  ,又有两个类 一个人  一个狗  都继承于 动物 这个类  ,你可以把一个人 或狗  称为  动物  ,但 反了 是不行的
--------------------编程问答--------------------
引用 10 楼 dx_dengxiang 的回复:
IList是接口
List是类
List实现了IList接口

正解~~ --------------------编程问答-------------------- --------------------编程问答--------------------
引用 8 楼 webdiyer 的回复:
引用 1 楼 flyerwing 的回复:
一个接口一个类,没什么区别吧.


就是接口和类的区别:)
实现接口的类可以被隐式转换为接口,如第一个例子,但接口不可以被隐式转换为类,这就是第二个例子出错的原因,你的gs.SelectGroupsBySql(SqlString,para)返回的是一个IList<T>泛型对象吧?


正解 --------------------编程问答-------------------- List<T>:IList<T> --------------------编程问答--------------------  IList<string> iList = new List<string>();

 List<string> list = new List<string>();

看看这个, 就会有点想法了。。  --------------------编程问答-------------------- List<T>lst=IList<T>.toList();
就可以转化了. --------------------编程问答-------------------- ILIST比list多一个"I" --------------------编程问答-------------------- 就是接口和类的区别:)
实现接口的类可以被隐式转换为接口,如第一个例子,但接口不可以被隐式转换为类,这就是第二个例子出错的原因,你的gs.SelectGroupsBySql(SqlString,para)返回的是一个IList<T>泛型对象吧? --------------------编程问答--------------------
引用 19 楼 xxoo2007 的回复:
ILIST比list多一个"I"
--------------------编程问答-------------------- 一直看到你。你好厉害。

引用 3 楼 wuyq11 的回复:
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
{
}IList 泛型接口是 ICollection 泛型接口的子代,
执行效果好并且是类型安全的
--------------------编程问答-------------------- --------------------编程问答-------------------- IList是一个接口 List是他的实现 --------------------编程问答-------------------- 一个类,一个接口
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,