列表界面:从Java到C#

Hei*_*bug 8 c# java interface list generic-collections

这些天我是一名学习C#的Java程序员.

通常在Java中使用列表时,它应该是针对其接口的优先编程,以便在实现之间切换:

List<Object> list = new ArrayList<Object>();
//or
list = new LinkedList<Object>(); 
Run Code Online (Sandbox Code Playgroud)

C#怎么样?是否存在类似的方法?有人能告诉我一个例子吗?从现在开始我以这种方式构建一个列表,但我不认为List是一个接口:

List<int> list = new List<int>();
list.Add(2);
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 9

在.NET中,最好使用层次结构中可能性最高的对象.你可以使用IList<T>界面:

IList<int> list = new List<int>();
list.Add(2);
Run Code Online (Sandbox Code Playgroud)

如果您不需要通过索引访问列表,您还可以使用ICollection<T>层次结构中更高的接口.

或者,如果您只想枚举列表,则可以使用最高可能的界面IEnumerable<T>:

IEnumerable<int> list = new List<int>(new[] { 1, 2, 3 });
foreach(int item in list)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)