2013-12-02 2 views
2

Язык, который я использую, является C#.метод передачи пароля в качестве IEnumerable <T> или как Список <T>

Как я прочитал, что лучше, если метод объекта возвращает перечислимый тип, как список, изложить ему свою подпись как ниже:

private IEnumerable<int> listOfNumbers() 
{ 
    // here goes the code of the method 
} 

вместо

private List<int> listOfNumbers() 
{ 
    // here goes the code of the method 
} 

Пусть теперь мы хотим передать в качестве параметра список объектов типа A.

Когда мы пишем

private IEnumerable<int> listOfNumbers(List<A> list) 
{ 
    // here goes the code of the method 
} 

легче получить доступ к элементам списка и делать какие-либо расчеты с ними, а не писать

private IEnumerable<int> listOfNumbers(IEnumerable<A> list) 
{ 
    // here goes the code of the method. 
} 

Во втором случае, для того, чтобы получить доступ к элементам списка, который реализует интерфейс IEnumerable , мы должны преобразовать список в список, внутри кода метода.

Я немного смущен о лучшем способе передать в качестве параметра тип tha реализует интерфейс IEnumerable. Какой лучший подход между двумя этими двумя? Есть ли лучший способ?

Заранее благодарим за любую помощь.

+0

Продолжайте абстрагировать определение, пока не заметите, что у вас больше нет доступных методов. Затем перейдите на одно место назад и возьмите абстракцию в этот момент. –

+0

это лучше, потому что это позволяет использовать любой тип, реализующий 'IEnumerable ' (включая 'List ', 'A []', ...), используя 'List ', ограничивает использование этого типа. –

ответ

Смежные вопросы