快速创建类的新实例

MwB*_*ker 4 c# resources object instance

假设有以下情况:

必须从大量的文件夹结构中检索日志文件,并将它们添加到List中.

哪种方案从机器中获取的资源更少?

LogFile file;
foreach (string filepath in folderfiles) 
{
   file = new LogFile { path = filepath, 
                        machine = machineName,
                        user = userName }; 
   files.Add(file);
}
Run Code Online (Sandbox Code Playgroud)

要么

foreach (string filepath in folderfiles) 
{
   LogFile logFile = new Logfile { path = filepath, 
                                   machine = machineName,
                                   user = userName }; 
   files.Add(file);
}
Run Code Online (Sandbox Code Playgroud)

它会有什么不同吗?

Dis*_*nky 9

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

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

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

  • 也许在第一个例子中它会使编译器的工作变得容易一些,但这并不重要.在任一运行时中,在第一个中没有进行的操作在第二个中没有完成,反之亦然. (2认同)