2012-02-11 43 views
0

以C#類中的開始數據結構爲例,試圖製作一個可搜索的字符串和一個int引用的數組結構體(名稱和編號)。我需要能夠搜索名稱,並檢索它所附的名稱和號碼。有人告訴我可以使用結構的數組列表,但從未使用過結構。任何簡單的解釋如何,或更好的方法?在C#中創建兩種數據類型的可搜索列表

預先感謝您。

+3

使用一個'ArrayList'都表明你的當然是相當落伍 - '名單'已優先爲幾乎所有用途自從2005年推出.NET 2以來...如果你想創建一個可搜索的數據結構,是否有任何理由被指示使用列表而不是更明顯的'Dictionary'? – 2012-02-11 19:40:55

回答

0

你可能應該使用類似於散列的東西,因爲結構的ArrayList是一個有點方形釘圓孔。

你聲明一個結構就像一個calss。

public struct Foo { 
    public String Bar { get; set; } 
    public Int32 Biz { get; set; } 
} 

而且可以使再一個數組列表,你會與任何類型的

var list = new ArrayList(); 
list.add(object); 

這裏的另一個問題是,ArrayList不是通用的,它會投一切Object這意味着你將不得不將所有東西都轉換回Foo類型來使用它。

var foo = (Foo)list.item(0); 

你會好得多,如果你有使用泛型列表類像List並聲明其類型去列表,而不是哈希的路線;

var list = List<Foo>(); 
var foo = new Foo { Bar = "Hello World", Biz = 1 }; 
list.add(foo); 

作爲搜索列表,我更喜歡使用LINQ方法,因爲它們是快速編寫和易於閱讀。

var matches = list.Where(x => x.Biz > 1); 

但如果你不能這樣做,那麼迭代總是工作

var matches = new List<Foo>(); 
foreach (var foo in list) { 
    if (list.Biz > 1) { 
     matches.add(foo); 
    } 
}