我倾向于使用结构的 ArrayLists。然后很容易用 foreach 循环遍历列表。
我遇到的问题是我不能使用 foreach 来修改结构内容,而必须使用 for 和混乱的类型转换。
((dataStructure)files[x]).name = here;
有没有更整洁的方法来做到这一点?
是的,有:不要使用 untyped ArrayList
,这些类型已被弃用,取而代之的是System.Collections.Generic
. 在你的情况下:List<T>
。
您仍然不能将它与foreach
循环结合使用来修改结构值,但至少您不必强制转换。
我知道这听起来很简单,但只是对可变值类型说不。
它们几乎从来都不是问题的正确解决方案。有极少数例外,但类几乎总是要走的路。
此外,如果您真的在使用 anArrayList
那么您将已经产生拆箱成本......(正如 Konrad 所说,如果您可以使用 .NET 2.0,那么请使用泛型。)
如果您真的坚持使用可变结构,请使用for
循环而不是foreach
. 但是,无论如何,请换班。
使用:的通用版本。ArrayList
List<DataStructure>
这样事情看起来好多了:
files[x].name = here;
是的,在某些情况下List <T>
也没有用。在这些情况下,手册中最古老的技巧起作用了。而不是foreach
,您应该使用 while 循环:
while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
deletefunc(lisItem[0]);
}