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

C# 在C中创建两种数据类型的可搜索列表#,c#,data-structures,struct,arraylist,C#,Data Structures,Struct,Arraylist,以C#类中的起始数据结构为例,尝试将一个字符串和一个同时引用的int(名称和数字)创建一个可搜索的arraylist。我需要能够搜索名称,并检索名称及其附加的数字。我被告知可以使用结构的arraylist,但从未使用过结构。有没有简单的解释,或者更好的方法 提前谢谢。您可能应该使用类似哈希的东西,因为结构的数组列表是一个有点方形的圆孔 您可以像calss一样声明一个结构 public struct Foo { public String Bar { get; set; } pub

以C#类中的起始数据结构为例,尝试将一个字符串和一个同时引用的int(名称和数字)创建一个可搜索的arraylist。我需要能够搜索名称,并检索名称及其附加的数字。我被告知可以使用结构的arraylist,但从未使用过结构。有没有简单的解释,或者更好的方法


提前谢谢。

您可能应该使用类似哈希的东西,因为结构的
数组列表是一个有点方形的圆孔

您可以像calss一样声明一个结构

public struct Foo {
    public String Bar { get; set; }
    public Int32  Biz { get; set; }
}
你可以像对待任何类型一样制作一个数组列表

var list = new ArrayList();
list.add(object);
这里的另一个问题是,
ArrayList
不是泛型的,它会将所有内容转换为
Object
,这意味着您必须将所有内容转换回type
Foo
,才能使用它

var foo = (Foo)list.item(0);
如果您必须使用List而不是使用像
List
这样的泛型List类进行散列并声明其类型,那么您的境况会好得多

var list = List<Foo>();
var foo = new Foo { Bar = "Hello World", Biz = 1 };
list.add(foo);
但若你们不能做到这一点,那个么迭代总是有效的

var matches = new List<Foo>();
foreach ( var foo in list ) {
    if ( list.Biz > 1 ) {
        matches.add(foo);
    }
}
var matches=newlist();
foreach(列表中的变量foo){
如果(list.Biz>1){
匹配。添加(foo);
}
}

使用
ArrayList
表明你的课程已经过时了-
List
自2005年推出.NET 2以来,几乎所有的应用都首选它。。。如果你想建立一个可搜索的数据结构,有没有什么理由要求你使用列表而不是更明显的
字典
var matches = new List<Foo>();
foreach ( var foo in list ) {
    if ( list.Biz > 1 ) {
        matches.add(foo);
    }
}