在此方案中,程序将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/

10-09 05:11