【发布时间】:2017-11-04 11:28:51
【问题描述】:
请原谅我对 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”都会变成一个新的空类...
请向我解释我到底做错了什么,我应该如何访问我的班级以检索我想要的任何班级中的项目...
【问题讨论】:
-
你是对的,当调用
new FilesDataClass();时,你正在创建一个新的类的空对象。您需要以某种方式将旧的 m_ListWorker-object 从 Class B 转移到 Form1。 -
@Basti 是的,它是正确的,但是如何......这就是我问这个问题的原因。
-
这取决于你的类结构。如果您在 Form1 中初始化 Class B,您可以简单地通过 myClassBInstance.m_ListWorker 访问它