我剛剛在網上找到了一些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背後的內容。 –