Я только что нашел пару примеров рефакторинга кода C# в Интернете и наткнулся на этот конкретный фрагмент кода.Итерация с помощью IEnumerable vs List
Может кто-нибудь объяснить мне, почему Method2()
будет лучше, чем Method1()
?
Способ № 1 - Выполнение нескольких итераций по методу IEnumerable<string>
public void Method1()
{
IEnumerable<string> names = GetNames();
foreach (var name in names)
{
Console.WriteLine("Found " + name);
}
var allnames = new StringBuilder();
foreach (var name in names)
{
allnames.Append(name + " ");
}
}
# 2 - Выполнение нескольких итераций на List<string>
public void Method2()
{
IEnumerable<string> names = GetNames();
var enumerable = names as List<string> ?? names.ToList();
foreach (var name in enumerable)
{
Console.WriteLine("Found " + name);
}
var allnames = new StringBuilder();
foreach (var name in enumerable)
{
allnames.Append(name + " ");
}
}
Пример был только на объектах C#. Никаких подключений SQL не было, что вызвало мое сомнение в «власти» рефакторинга. Но, как вы говорите, это, вероятно, считается лучшей практикой, поскольку вы не знаете, что стоит за IEnumerable. –