修改foreach中的内容

Tim*_*Tim 1 c# casting structure arraylist

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

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

((dataStructure)files[x]).name = here;
Run Code Online (Sandbox Code Playgroud)

有更简洁的方法吗?

Kon*_*lph 13

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

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


Jon*_*eet 7

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

它们几乎永远不是解决问题的正确方法.有一个少数例外,但类几乎总是要走的路.

此外,如果你真的使用了ArrayList那么你就会产生拆箱成本...(正如康拉德所说,如果你可以使用.NET 2.0,那么就使用泛型.)

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