快速创建类的新实例

时间:2017-10-03 13:16:40

标签: c# object resources instance

假设以下情况:

必须从大量文件夹结构中检索日志文件,并将其添加到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);
}

它会有什么不同吗?

2 个答案:

答案 0 :(得分:9)

实际上,JIT(即时)编译器可能会优化两种方法之间的差异。从概念上讲,第一个选项是“更好”,因为编译器(假设没有优化)不必担心循环中变量的范围。

此外,new LogFile()创建的新实例将超出范围,并且在两种方法的同一时间内都有资格进行垃圾回收。

简而言之,完全编译时没有重大差异(如果有的话)。

答案 1 :(得分:1)

您是在第一个场景中创建类型文件的实例变量吗?我的预测是,这需要稍微多一点而不是底部选项。但正如@DiskJunky指出的那样,几乎没有区别。