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