1

我倾向于使用结构的 ArrayLists。然后很容易用 foreach 循环遍历列表。

我遇到的问题是我不能使用 foreach 来修改结构内容,而必须使用 for 和混乱的类型转换。

((dataStructure)files[x]).name = here;

有没有更整洁的方法来做到这一点?

4

4 回答 4

13

是的,有:不要使用 untyped ArrayList,这些类型已被弃用,取而代之的是System.Collections.Generic. 在你的情况下:List<T>

您仍然不能将它与foreach循环结合使用来修改结构值,但至少您不必强制转换。

于 2009-05-14T12:17:01.203 回答
7

我知道这听起来很简单,但只是对可变值类型说不

它们几乎从来都不是问题的正确解决方案。有少数例外,但类几乎总是要走的路。

此外,如果您真的在使用 anArrayList那么您将已经产生拆箱成本......(正如 Konrad 所说,如果您可以使用 .NET 2.0,那么请使用泛型。)

如果您真的坚持使用可变结构,请使用for循环而不是foreach. 但是,无论如何,请换班。

于 2009-05-14T12:17:42.073 回答
1

使用:的通用版本。ArrayListList<DataStructure>

这样事情看起来好多了:

files[x].name = here;
于 2009-05-14T12:18:53.773 回答
0

是的,在某些情况下List <T>也没有用。在这些情况下,手册中最古老的技巧起作用了。而不是foreach,您应该使用 while 循环:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
于 2012-08-16T08:09:03.570 回答