Методы: что лучше List или объект? - PullRequest
1 голос
/ 18 октября 2010

Пока я программировал, я задал этот вопрос,

Что лучше, если метод принимает один объект или список этих объектов?

Например, мне нужен список строк. Я могу иметь:

  • метод, принимающий список List и возвращающий список строк с результатами.

    List<string> results = methodwithlist(List[objects]); 
    

или

  • метод, принимающий объект и возвращающий строку. Затем используйте эту функцию в цикле и заполняйте список.

    for int i = 0; i < List<objects>.Count;i++;)
    {
       results = methodwithsingleobject(List<objects>[i]);
    }
    

** Это всего лишь пример. Мне нужно знать, какой из них лучше или больше используется и почему.

Спасибо!

Ответы [ 3 ]

7 голосов
/ 18 октября 2010

Что ж, легко создать первую форму, когда у вас есть вторая, - но с помощью LINQ вам действительно не нужно писать свою собственную, как только вы получите прогноз. Например, вы можете написать:

List<string> results = objectList.Select(X => MethodWithSingleObject()).ToList();

Как правило, проще написать и протестировать метод, который работает только с одним значением, если только ему не нужно , чтобы узнать остальные значения в коллекции (например, для поиска агрегатов).

2 голосов
/ 18 октября 2010

Я бы выбрал второе, потому что его проще использовать, когда у вас есть одна строка (то есть она более общего назначения). Кроме того, ответственность самого метода более ясна, потому что метод не должен иметь ничего общего со списками, если его цель - просто изменить строку.

Кроме того, вы можете упростить вызов с Linq:

result = yourList.Select(p => methodwithsingleobject(p));
1 голос
/ 18 октября 2010

Этот вопрос часто возникает при изучении любого языка, ответ несколько спорный, поскольку стандартная практика кодирования заключается в том, чтобы полагаться на LINQ для оптимизации кода для вас во время выполнения.Но это предполагает, что вы используете версию языка, которая его поддерживает.Но если вы действительно хотите провести исследование по этому вопросу, есть несколько статей о переполнении стека, которые углубляются в это, а также дают обзор внешних ресурсов:

  1. В .NET, который работает быстрее, 'for' или 'foreach'?
  2. C #, для циклов и проверки скорости ... Точно такой же цикл быстрее во второй раз?

Однако я научился не слишком полагаться на Count и использовать Length в типизированных коллекциях, поскольку это может быть намного быстрее.

Надеюсь, это полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...