このシナリオでは、プログラムはディレクトリ内のxmlfilesを取得します。各xmlfileは、listToWatch Listにすでに追加されている場合、2番目のメソッドで評価されます。ただし、firstMethodは、各ディレクトリの評価のためにもループされます(以下には記述されていません)。
プログラムは、すでに追加されているxmlファイル内のすべてのファイルを検出します。ただし、プログラムが別のディレクトリに移動すると(firstMethodが別のクラスでループされるため)、listToWatch = new List()が渡され、前のlistToWatchが消去され、新しいオブジェクトが作成されます。
新しいリストで上書きせずに同じオブジェクトを使用したい。forループがあり、listToWatchを新しいオブジェクトで上書きするだけなので、listToWatch =newListをsecondMethodに入れることはできません。secondMethodで設定する必要があるため、firstMethod内にも配置できません。サンプルクラスに入れることもできません。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();
}
}
}