用IList声明并用List实例化的目的

先举例:

public class User
{
    public string mName;
    public int mAge;
    public User(string name, int age)
    {
        mName = name;
        mAge = age;
    }
}
internal class IListTest
{
    public static void Go()
    {
        IList<User> list = new List<User>();
        User user1 = new User("jump", 18);
        User user2 = new User("chen", 19);
        list.Add(user1);
        list.Add(user2);
        // list.Sort(); // 报错
        foreach (var user in list)
        {
            Console.WriteLine(user.mName + " : " + user.mAge);
            Console.WriteLine(list.Count);
        }
    }
}

IList<User> list = new List<User>(); 千万要注意:等式的右边是List<User>,而不是 IList<User>,如果在List前面加一个I, 就会出现错误:抽象类或接口无法创建实例。这样写的优点:当你只想使用IList<T>接口规定的字段和方法时,IList<T>这种方式比较好。他不获取实现这个接口的类的其他方法和字段,有效的节省空间。

IList<T>仅仅是所有泛型类型的接口,并没有太多方法可以使用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序Sort,这个时候IList就爱莫能助了,如上例:无法使用Sort函数,这个时候就只能用List<T>来声明了。因为List <T>已经实现了IList <T>里的那些方法并新加了一些额外的字段和方法,比如Sort函数。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值