chinta123 Ответов: 5

Разница между ilist и list in asp.net


Может ли кто-нибудь ясно понять меня насчет ilist и list.Пожалуйста, приведите мне какой-нибудь пример, чтобы я мог ясно понять.

спасибо.

5 Ответов

Рейтинг:
38

Martin Arapovic

Привет!

Просто хочу добавить несколько вещей...

Идея состоит в том, чтобы программировать против интерфейса, а не реализации. Таким образом, IList-это интерфейс (контракт), который используется для реализации списка. Например, если вы хотите написать метод, который возвращает и принимает "коллекцию" объектов, вы должны написать свой метод для возврата и принятия интерфейсов. Какой интерфейс вы хотите использовать, зависит от того, что вы хотите сделать в этом методе.
Например, предположим, что если вы просто хотите перебрать коллекцию, то вам следует использовать "самый маленький" тип интерфейса, который является IEnumerable, а не конкретной реализацией (List, Collection, ArrayList, StringCollection и т. д.). возвращая и принимая определенный интерфейс, вы только гарантируете или обещаете, что ваш компонент, метод или что-то еще будет вести себя определенным образом. Посмотри сюда AddRange метод, который определен на Список класс:

public void AddRange (
    IEnumerable<t> collection
)</t>

Используя этот метод, вы можете добавить несколько элементов в данный экземпляр списка. Поэтому внимательно посмотрите на его определение. Он определен, чтобы принять IEnumerable. таким образом, автор этого метода предоставил вам решение, что вы можете добавить любой тип коллекции в данный список, потому что каждая коллекция имеет реализованный IEnumebrable и его "самый маленький" тип интерфейса, который поддерживает простую итерацию по коллекции.

Если вы хотите узнать больше о том, как и для чего используются интерфейсы, взгляните на это книга[^]...


Sergey Alexandrovich Kryukov

Опять хороший ответ; Я согласен и проголосовал 5.
Я также добавил некоторые основные ссылки и объяснение о некорректности таких вопросов, пожалуйста, смотрите мой ответ.
--СА

Martin Arapovic

ОК! ТПХ...

Wonde Tadesse

5+

Espen Harlinn

5 ЕД!

Рейтинг:
31

Ed Nutting

Привет,

Так List объект позволяет вам создавать список, добавлять в него вещи, удалять его, обновлять его, индексировать в него и т. д., И все это очень хорошо. List используется всякий раз, когда вам просто нужен дженерик List где вы указываете тип объекта в нем, и это все.

IList с другой стороны, это Interface(Подробнее об интерфейсах см. Интерфейсы MSDN[^В принципе, если вы хотите создать свой собственный тип List, скажем, класс списка называется SimpleList, то вы можете использовать Interface чтобы дать вам основные методы и структуру для вашего нового класса. IList это для тех случаев, когда вы хотите создать свой собственный, специальный подкласс, который реализует List.

Для дальнейшего чтения см.:
Список MSDN[^]
MSDN IList[^] - в частности, посмотрите на пример кода и посмотрите класс SimpleList.

Надеюсь, это поможет,
Эд


Wonde Tadesse

5+

Ed Nutting

Спасибо :)

Espen Harlinn

5 ЕД!

Ed Nutting

Спасибо :)

Рейтинг:
21

OriginalGriff

Разница в том, что IList-это Interface и не может быть инстанцирован. List-это класс, и его можно создать.
Т. е.: вы не можете сказать

IList<string> list = new IList<string>();
Но вы можете сказать:
List<string> list = new List<string>


Это означает, что ваш собственный класс может быть производным от обоих, но с интерфейсом IList вы можете быть производным от "нормального" класса (например, "MyClass") и IList:
Вы можете сказать::
public class MyClassList: MyListsClass, IList<MyClass>
Но ты не можешь сказать
public class MyClassList: MyListsClass, List<MyClass>
Потому что для этого потребовалось бы, чтобы C# производился из нескольких классов, а это невозможно.


Wonde Tadesse

5+

Espen Harlinn

5 ЕД!

pjpdada

да

Рейтинг:
2

Vishnu Prajapati

IList<> - Это интерфейс, в то время как List<> - Это конкретный класс.

IList<> Не может быть создан, в то время как List может быть создан.

например :
-----------------

У меня есть класс с именем Employee like

Public Class Employee
{
    //Member function
    //Member variables
}


Тогда следование невозможно
IList<employee> EmpObj = new IList<employee>

В то время как следующие возможны
IList<employee> EmpObj = new List<employee> 

ОПЕРАЦИОННАЯ
List<employee> EmpObj = new List<employee></employee></employee></employee></employee></employee></employee>


Vishnu Prajapati

зачем именно нужно

Рейтинг:
1

Sergey Alexandrovich Kryukov

Прежде чем задавать вопросы, пожалуйста, прочтите это обсуждение:
Как задать хороший вопрос?[^].

Кроме того, проверьте мой ответ на соответствующую тему: в чем разница между классом и инкапсуляцией в программировании[^].

Вместо того, чтобы задавать неправильные и бесполезные вопросы о "разнице", вам нужно просто начальное образование в области ООП и программирования в целом.

Во - первых, взгляните сюда:
http://en.wikipedia.org/wiki/Object-oriented_programming[^],
http://en.wikipedia.org/wiki/Dynamic_dispatch[^],
http://en.wikipedia.org/wiki/Interface_%28computing%29#Software_Interfaces[^].

Удачи,

—СА


Martin Arapovic

Хорошие ссылки для людей, которые не понимают принципов многоразового объектно-ориентированного проектирования или ООП-проектирования в целом.

Sergey Alexandrovich Kryukov

Спасибо, Мартин.
(Я обратил внимание на этот старый пост, потому что заметил новый голос 1. Интересно, почему два человека могут так голосовать?)
--СА

Member 12811035

не думайте, что вы гений...

Member 14548404

прежде чем отвечать на вопросы, прочтите эту ссылку www.f***you.com