假设以下情况:
必须从大量文件夹结构中检索日志文件,并将其添加到List中。
哪种方案从机器中获取的资源更少?
LogFile file;
foreach (string filepath in folderfiles)
{
file = new LogFile { path = filepath,
machine = machineName,
user = userName };
files.Add(file);
}
或
foreach (string filepath in folderfiles)
{
LogFile logFile = new Logfile { path = filepath,
machine = machineName,
user = userName };
files.Add(file);
}
它会有什么不同吗?
答案 0 :(得分:9)
实际上,JIT(即时)编译器可能会优化两种方法之间的差异。从概念上讲,第一个选项是“更好”,因为编译器(假设没有优化)不必担心循环中变量的范围。
此外,new LogFile()
创建的新实例将超出范围,并且在两种方法的同一时间内都有资格进行垃圾回收。
简而言之,完全编译时没有重大差异(如果有的话)。
答案 1 :(得分:1)
您是在第一个场景中创建类型文件的实例变量吗?我的预测是,这需要稍微多一点而不是底部选项。但正如@DiskJunky指出的那样,几乎没有区别。