【发布时间】:2012-08-21 13:47:34
【问题描述】:
我有一个循环存储创建对象和存储它们。有 3 个类和很多代码,所以我将重点介绍: 在主类中:
public static List<TaskIDHolder> mainHolders = new List<TaskIDHolder> ();
我的循环是这样工作的:
foreach (string aDir in directories){
//Variables
string var1= "";
int var2= 0;
//Buisness Logic
//Storage
Boolean newTaskID = true;
foreach (TaskIDHolder taskIDHolder in mainHolders)
{
if (taskIDHolder.getTaskID().Equals(taskID))
{
//Add obj
File newFile = new File(var1, var2);
taskIDHolder.addFile(newFile);
newTaskID = false;
}
}
if (newTaskID)
{
//Create Holder
File newFile = new File(var1, var2);
TaskIDHolder newHolder = new TaskIDHolder(taskID, newFile);
//Add Holder
mainHolders.Add(newHolder);
}
}
现在我的其他类是 File 和 TaskIDHolder。现在我在 TaskIDHolder 中获得了同一文件的 9 个实例,而不是不同的实例。
编辑:抱歉,我的问题是如何获取存储的 File 对象的唯一实例。
我没有写下业务逻辑,因为它没有为问题带来洞察力。
至于这里的类是:
class File
{
public static string var1;
public static int var2;
public File(string avar1, int avar2)
{
var1 = avar1;
var2 = avar2;
}
public string getVar1()
{
return var1;
}
public int getVar2()
{
return var2;
}
}
class TaskIDHolder
{
public static List<File> files = null;
public static string taskID = "";
public TaskIDHolder(string aTaskID, File aFile)
{
taskID = aTaskID;
files = new List<File>();
files.Add(aFile);
}
public void addFile(File aFile)
{
files.Add(aFile);
}
public string getTaskID()
{
return taskID;
}
public List<File> getFiles()
{
return files;
}
}
【问题讨论】:
-
这对我来说听起来不对 - 我强烈建议您编写一个简短但 完整 的程序来演示该问题。目前我们看不到您的 File 或 TaskIDHolder 类。
-
您正在为每个目录循环访问相同的列表 (
mainHolders)。这是你想要的吗? -
var1 和 var2 是干什么用的?你永远不会改变它们。
-
“taskID”从何而来?
-
我认为你需要在设置 newTaskID = false 后打破内部 foreach 循环;