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

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

你可能感兴趣的:(C#)