[英]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.