C#的实现差异

时间:2009-10-22 12:16:00

标签: c# interface

我是C#的学习者。你可以解释一下我分配一个是什么区别 收集到界面。

我看到一些例子,初始化

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

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

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

我们什么时候需要后者呢?。例如,如果你愿意提供一个例子,可以教会我很好。

3 个答案:

答案 0 :(得分:4)

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

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

这样,您可以将公共接口与实际在方法中内部使用的具体类型分离。例如,您可以选择使用List<int>替换Collection<int>的内部使用而不影响公共接口或其用户,因为它们都实现IList<T>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

列表是一个具体的实现。如果您是唯一的消费者,这是最合适的。 IList在多个消费者访问时提供灵活性。因此,如果实施方式发生变化,其他消费者将不会改变。