[英]C# List inside class and namespace, accessing it from another class
请原谅我对C#的一点了解,因为对于某些人来说,这个问题可能很容易,但我无法解决。
我已经尝试并搜索了许多示例和教程,但是所有这些都只是部分示例,因此我无法正确理解。
我有此类“ FilesDataStruct”:
namespace MYPROJECT.FilesListData
{
class FilesDataStruct
{
public int ID;
public string Name;
}
}
和类“ FilesDataClass”:
namespace MYPROJECT.FilesListData
{
class FilesDataClass
{
public List<FilesDataStruct> Files;
public FilesDataClass()
{
Files = new List<FilesDataStruct>();
}
}
}
他们使用的名称空间是“ FilesListData ”。
因此,我进入MYPROJECT的 “ B ”类并声明:
private FilesDataClass m_ListWorker;
然后将项目添加到我的列表中:
m_ListWorker = new FilesDataClass();
FilesDataStruct item = new FilesDataStruct();
for (int i = 0; i < 10; i++)
{
item.ID = i;
item.Name = "Just_Testing";
m_ListWorker.Files.Add(item);
}
对此进行调试,我可以看到项目已正确添加。
现在,我需要在“ Form1 ”类(或任何其他..)中访问此列表:
所以我再次声明:
private FilesDataClass m_ListWorker;
但是阅读我发现的示例和教程,我已经做到了:
m_ListWorker = new FilesDataClass(); // this is weird, if I call the class again it's normal to be empty
for (int i = 0; i < m_ListWorker.Files.Count; i++)
{
Console.WriteLine(m_ListWorker.Files[i].ID);
Console.WriteLine(m_ListWorker.Files[i].Name);
}
当然,那里什么也没有。 我猜问题是“ FilesDataClass ”的构造函数,因为每次调用“ new ”时,它将变成一个新的空类...
请向我解释世界上我做错了什么,以及如何访问我的班级以检索想要的任何班级中的项目...
您需要传递对现有类的引用,而不是为其创建新实例。
public class Form1 : Form
{
FilesDataClass m_ListWorker = null;
public Form1(FilesDataClass f)
{
this.m_ListWorker = f;
}
}
var newForm = new Form1(m_ListWorker);
您还有第二个问题。 该for
循环将无法正常工作。 您只需添加10次相同的FilesDataStruct
实例...最后,您将拥有10个引用,它们将具有相同的值(在循环的上一迭代中分配的值)。
m_ListWorker = new FilesDataClass();
FilesDataStruct item = new FilesDataStruct();
for (int i = 0; i < 10; i++)
{
item.ID = i;
item.Name = "Just_Testing";
m_ListWorker.Files.Add(item);
}
实例化循环内的类:
m_ListWorker = new FilesDataClass();
for (int i = 0; i < 10; i++)
{
FilesDataStruct item = new FilesDataStruct();
item.ID = i;
item.Name = "Just_Testing";
m_ListWorker.Files.Add(item);
}
您需要公开B.m_ListWorker(或者更好的是公开属性)。然后,如果它是实例属性,则可以使用someInstanceOfB.ListWorker进行访问;如果是静态的,则可以使用B.ListWorker进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.