2017-03-07 111 views
2

我有一個關於在C#中創建數組的問題,當我不知道元素的確切數量時。我發現了很多類似的問題,例如this one。建議使用List而不是Array。在那個例子和其他所有我見過它實例化一個'字符串列表'的列表中。我可以做一個結構相同嗎?C#數組沒有指定的大小

例如,我有以下用於存儲故障信息的結構,但我不知道在測試開始時會發生多少故障。它可能是0,可能是數百。

public struct EraseFailures 
    { 
     public string timestamp; 
     public string bus; 
     public string channel; 
     public string die; 
     public string block; 
    } 

那麼我可以創建這些列表嗎?

List<EraseFailures> eFails = new List<EraseFailures>(); 

它編譯得很好,但我想確保這是做到這一點的最佳方式。如果是的話,給我的List添加值的語法是什麼?因爲以下似乎並不正確......

 eFails.bus.Add("bus0"); 

好像我可能需要創建與我想要的值一個新的結構,然後添加到列表中。

+8

*好像我可能創建與我想要的值了新的結構然後將其添加到列表中。*:**是** – xanatos

+1

想一想:eFails.bus.Add(「bus0」)是什麼意思?在哪裏添加_bus0_? – Pikoh

+4

請注意[可變結構是邪惡的](http://stackoverflow.com/questions/441309/why-are-mutable-structs-vil),如果你覺得需要創建一個你應該公開只讀屬性並設置構造函數中的屬性。 – juharr

回答

4

如果我沒理解錯的話,你問如何使用類型List ... 使用方法如下:

//init list 
List<EraseFailures> fails = new List<EraseFailures>(); 

//make instance of EraseFailuers struct 
EraseFailures f = new EraseFailures(); 
//add data 
f.bus = "bus01"; 
f.channel = "somechannel"; 
//etc 
fails.Add(f); 
+0

是的,我認爲這是我所需要的。只需要比我更聰明的人來確認。謝謝。 – milnuts

+0

很高興我幫你。我不一定更聰明,只是有更多的經驗。祝你的項目好運。 – Nino