8

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

通常在 Java 中使用列表时,最好针对其接口进行编程,以便在实现之间切换:

List<Object> list = new ArrayList<Object>();
//or
list = new LinkedList<Object>(); 

C# 呢?是否存在类似的方法?有人可以给我看一个例子吗?从现在开始我正在以这种方式构建一个列表,但我不认为 List 是一个接口:

List<int> list = new List<int>();
list.Add(2);
4

4 回答 4

9

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

IList<int> list = new List<int>();
list.Add(2);

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

或者,如果您只想枚举列表,您可以使用最高可能的接口,即IEnumerable<T>

IEnumerable<int> list = new List<int>(new[] { 1, 2, 3 });
foreach(int item in list)
{
    ...
}
于 2011-10-27T07:17:10.163 回答
1
IList<int> = new List<int>();

在 C# 中这很容易 - 如果它以I一个接口开头。

于 2011-10-27T07:17:11.033 回答
1

List<T>实现了许多接口,包括IList<T>ICollection<T>。您可能需要检查您的代码以确定最合适的接口。

于 2011-10-27T07:17:36.327 回答
1

在.netIList<T>中是接口。您可以为其分配任何接口的实现,例如List<T>. 请参阅此接口的实现:http: //msdn.microsoft.com/en-us/library/6sh2ey19.aspx#inheritanceContinued

于 2011-10-27T07:18:04.470 回答