C# 在for/foreach循环中声明相同的对象

C# 在for/foreach循环中声明相同的对象,c#,object,C#,Object,在foreach循环中声明对象可以吗?我的主方法有一个for循环,它调用method1,method1也有一个for循环。我只想更改同一对象的setFileFolder值,是否可以再次声明同一对象,然后更改其值 示例代码: string[] arrs = { "a", "b", "c", "d", "e", "f", "g", "h", "i", }; foreach(string arr in arrs) { GetFile gf = new GetFile(); gf.se

在foreach循环中声明对象可以吗?我的主方法有一个for循环,它调用method1,method1也有一个for循环。我只想更改同一对象的setFileFolder值,是否可以再次声明同一对象,然后更改其值

示例代码:

string[] arrs = { "a", "b", "c", "d", "e", "f", "g", "h", "i", };

foreach(string arr in arrs)
{
    GetFile gf = new GetFile();
    gf.setFileFolder(arr);
    Console.WriteLine(gf.getFileFolder());
}

是的,这是一件平常的事


唯一的问题是
newgetfile()
的操作速度慢。然后,您可能希望在循环之外声明它以提高性能。

是的,这是一种常见且正常的做法


唯一的问题是
newgetfile()
的操作速度慢。然后您需要在循环之外声明它以提高性能。

您不需要实例化GetFile X次


我当然会工作,但它不是干净的

您不需要实例化GetFile X次


我当然会工作,但它不是干净的

如果这是您的意图,那么在循环中声明一个对象是可以的。在这种情况下,循环的每次迭代都将创建一个新的
GetFile
实例

可以将声明移到循环外部以重用同一对象:

GetFile gf = new GetFile();
foreach(string arr in arrs)
{
    gf.setFileFolder(arr);
    Console.WriteLine(gf.getFileFolder());
}

如果这是您的意图,那么在循环中声明一个对象是可以的。在这种情况下,循环的每次迭代都将创建一个新的
GetFile
实例

可以将声明移到循环外部以重用同一对象:

GetFile gf = new GetFile();
foreach(string arr in arrs)
{
    gf.setFileFolder(arr);
    Console.WriteLine(gf.getFileFolder());
}

如果我有多个实例,会发生什么?@Blackator这些实例将在每次迭代结束时被释放,并被垃圾收集。即使我将对象放在for循环之外,main()仍会多次调用GetFile对象驻留的方法,因为它会循环该方法。我可以公开一个对象吗?@Blackator,如果这是你的意图,你可以这样做;也许
private
会是一个更好的选择。您还可以在
main
中声明它,并将其作为参数传递给在循环中调用的方法。但是,这可能是一个太早的优化:如果探查器没有将
GetFile
的分配作为时间接收器指向,则可以将其保留在循环中。如果我有多个实例,会发生什么情况?@Blackator实例将在每次迭代结束时释放,即使我将对象放在for循环之外,main()仍会多次调用GetFile对象驻留的方法,因为它会循环该方法。我可以公开一个对象吗?@Blackator,如果这是你的意图,你可以这样做;也许
private
会是一个更好的选择。您还可以在
main
中声明它,并将其作为参数传递给在循环中调用的方法。但是,这可能还为时过早:如果探查器没有将
GetFile
的分配作为时间接收器指向,则可以将其保留在循环中。如果我将对象放在method1中,它将被实例化多次。我只想更改对象的setFileFolder值。有什么解决方法吗?我有一个调用method1的for循环。如果我将对象放在method1中,它将被实例化多次。我只想更改对象的setFileFolder值。有什么解决方法吗?由于for循环,有多个实例如何?它坏吗?在大多数情况下,它不会坏。如果声明
GetFile()
的新实例需要花费大量时间或占用大量内存,那么这可能是一个问题,但除此之外,我不会担心它。如果它成为一个问题,你总是可以重构,但是现在,我会选择你认为最容易阅读的内容。由于for循环,让它有多个实例怎么样?它坏吗?在大多数情况下,它不会坏。如果声明
GetFile()
的新实例需要花费大量时间或占用大量内存,那么这可能是一个问题,但除此之外,我不会担心它。如果出现问题,您可以随时进行重构,但现在,我会选择您认为最容易阅读的内容。