0
以C#類中的開始數據結構爲例,試圖製作一個可搜索的字符串和一個int引用的數組結構體(名稱和編號)。我需要能夠搜索名稱,並檢索它所附的名稱和號碼。有人告訴我可以使用結構的數組列表,但從未使用過結構。任何簡單的解釋如何,或更好的方法?在C#中創建兩種數據類型的可搜索列表
預先感謝您。
以C#類中的開始數據結構爲例,試圖製作一個可搜索的字符串和一個int引用的數組結構體(名稱和編號)。我需要能夠搜索名稱,並檢索它所附的名稱和號碼。有人告訴我可以使用結構的數組列表,但從未使用過結構。任何簡單的解釋如何,或更好的方法?在C#中創建兩種數據類型的可搜索列表
預先感謝您。
你可能應該使用類似於散列的東西,因爲結構的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);
}
}
使用一個'ArrayList'都表明你的當然是相當落伍 - '名單'已優先爲幾乎所有用途自從2005年推出.NET 2以來...如果你想創建一個可搜索的數據結構,是否有任何理由被指示使用列表而不是更明顯的'Dictionary'? –
2012-02-11 19:40:55