在C#中创建两种数据类型的可搜索列表

时间:2012-02-11 19:36:41

标签: c# data-structures struct arraylist

在C#类中开始使用数据结构,尝试创建一个字符串的可搜索arraylist和一起引用的int(名称和数字)。我需要能够搜索名称,并检索名称和数字它附属于。我被告知我可以使用结构的arraylist,但从未使用结构。任何简单的解释如何,或更好的方式?

提前谢谢。

1 个答案:

答案 0 :(得分: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这样的通用列表类并且声明其类型而使用List而不是Hash的路径,你会好得多;

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);
    }
}