Интерфейс списка: от Java до C # - PullRequest
8 голосов
/ 27 октября 2011

В настоящее время я программист на Java, изучаю C #.

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 27 октября 2011

В .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 голос
/ 27 октября 2011

In .net IList<T> - это интерфейс.И вы можете назначить ему любую из реализаций интерфейса, например, List<T>.См. Реализации этого интерфейса: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx#inheritanceContinued

1 голос
/ 27 октября 2011

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

1 голос
/ 27 октября 2011
IList<int> = new List<int>();

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

...