修改foreach中的内容

时间:2009-05-14 12:12:47

标签: c# arraylist structure casting

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

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

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

有更简洁的方法吗?

4 个答案:

答案 0 :(得分:13)

是的,有:不使用无类型ArrayList,不推荐使用这些类型,而使用System.Collections.Generic中的泛型类型。在您的情况下:List<T>

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

答案 1 :(得分:7)

我知道这听起来过于简单但 just say no to mutable value types

他们几乎从不解决问题的正确方法。有一些非常的例外,但是类几乎总是

此外,如果您真的使用ArrayList,那么您将承担拆箱费用......(正如Konrad所说,如果您可以使用.NET 2.0,那么请使用泛型。)

如果你真的坚持使用可变结构,那么使用for循环而不是foreach。但请,请转到课程。

答案 2 :(得分:1)

使用ArrayList的{​​strong>通用版本:List<DataStructure>

这样事情看起来好多了:

files[x].name = here;

答案 3 :(得分:0)

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

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
相关问题