关于接口:C#中的实现差异

Implementation difference in C#

本问题已经有最佳答案,请猛点这里访问。

我是C的学习者。你能解释一下分配A和分配A之间的区别吗?集合到接口。

我看到一些例子,初始化

1
List<int> few = new List<int>() { 12, 123, 211, 200 };

但有些人把集合分配给接口

1
IList<int> someList=new List<int>(){12,23,56,78};

我们什么时候需要晚一点的?如果你能提供一个例子的话,正反两面都能很好地教育我。


通常,您应该选择在公共接口中公开IList,而不是List,而如果仅在方法内部使用该列表,则没有什么区别:

1
2
3
4
5
public IList<int> GetSomeInts()
{
    List<int> result = new List<int>() { 12, 123, 211, 200 };
    return result;
}

通过这种方式,可以将公共接口与方法内部实际使用的具体类型分离开来。例如,您可以选择使用Collection代替List的内部使用,而不影响公共接口或其用户,因为两者都实现了IList


列表是一个具体的实现。如果你是唯一的消费者,这是最合适的。当多个消费者访问时,iList提供了灵活性。因此,如果实现发生变化,其他消费者就不会改变任何东西。


使用IList时,您只能访问IList中的方法,而不能访问仅在列表中(而不是在IList中)的方法。