【发布时间】:2015-11-19 23:21:55
【问题描述】:
在下面的代码中,
直接创建List<string> 比创建string[] 并在将其传递给SomeMethod() 之前调用ToList() 是否更有效(在内存和时间方面)?
如果您创建string[] 并调用ToList(),它是否会创建一个List<string> 对象,以及已经拥有string[]?
我问的原因是我已经看到他们创建string[] 并在将其作为参数传递给带有List<string> 参数的方法之前调用ToList() 的代码,我不确定是否存在有什么特别的原因。
class Program
{
static void Main(string[] args)
{
var array = new string[] { "str1", "str2" };
SomeMethod(array.ToList());
var list = new List<string> { "str1", "str2" };
SomeMethod(list);
}
static void SomeMethod(List<string> list)
{
//do stuff
}
}
【问题讨论】:
-
你说的是时间效率还是内存效率?
-
我对时间和内存效率都很感兴趣。
-
肯定会创建一个 string[] 并调用 ToList() 会在时间和内存效率方面有所损失吗?我无法弄清楚为什么在生产中使用此代码。它是由一位经验丰富的开发人员编写的。
-
即使是最有经验的开发人员也有休息日:)
-
有些方法可以修改参数,即使不应该这样做......也许那个人只是在代码库中工作,其中方法名称始终如一地谎报他们所做的事情(比如
CountItemsInList(list)实际上可能会删除一半的项目... :) )