在此方案中,程序将xmlfiles获取到目录中。如果每个xmlfile已经添加到listToWatch List中,则将使用第二种方法进行评估。但是,firstMethod也被循环以评估每个目录(以下未编写)。
该程序将检测xml文件中已添加的所有文件。但是,如果程序转到另一个目录(因为firstMethod在另一个类中循环),则传递listToWatch = new List(),从而擦除先前的listToWatch并创建一个新对象。
我想使用相同的对象而不会被新列表覆盖。我不能将listToWatch = new List放在secondMethod中,因为有一个for循环,它只会用新对象覆盖listToWatch。我不能将其放在firstMethod中,因为它需要在secondMethod中设置。我也不能将其放在Sample类中。我应该在哪里放置listToWatch = new List()?
class Sample
{
public static List<string> listToWatch
{
get;
set;
}
public static void firstMethod()
{
string getFiles = Directory.GetFiles(directory, "*.xml");
foreach (string xmlFile in getFiles)
{
secondMethod(xmlFile);
}
}
public static void secondMethod(xmlFile)
{
listToWatch = new List<string>();
foreach (string file in xmlFile)
{
if (listToWatch.Contains(file))
{
sw.WriteLine(file + " is already added!");
}
else
{
listToWatch.add();
}
}
}
最佳答案
与getter和setter一起使用怎么办?
private static List<string> _ListToWatch;
public static List<string> ListToWatch
{
get
{
if(_ListToWatch == null)
_ListToWatch = new List();
return _ListToWatch;
}
set
{
_ListToWatch = value;
}
}
必须说,让方法返回此对象而不是存储它可能是更好的选择,但是如果由于某种原因您无法更改它,我认为这会起作用
编辑:感谢@gorpik,这称为“属性”,而不是“使用getter和setter”。
关于c# - 在for循环中使用相同的对象-C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13860104/