2011-10-27 4 views
7

Я - программист Java, изучающий C# в эти дни.Интерфейс списка: от Java до C#

Обычно в Java при использовании списков, она должна быть preferrable программирования против своего интерфейса для того, чтобы переключаться между реализациями:

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

насчет C#? Существует ли подобный подход? Может ли кто-нибудь показать мне пример? Поскольку теперь я строй списка этого пути, но я не думаю, что список является интерфейсом:

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

ответ

8

В .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) 
{ 
    ... 
} 
1
IList<int> = new List<int>(); 

в C# это легко - если она начинается с I Сво интерфейса.

1

List<T> реализует ряд интерфейсов, включая IList<T> и ICollection<T>. Возможно, вам придется изучить свой код, чтобы определить, какой интерфейс наиболее подходит.

+0

спасибо .. Не могли бы вы объяснить разницу между IList и ICollection в нескольких словах? – Heisenbug

+0

@Heisenbug - я связан с их документацией, а @Darin уже объяснил ключевое различие - что 'IList ' поддерживает индексированный доступ. –