C# 修改foreach中的内容

C# 修改foreach中的内容,c#,arraylist,structure,casting,C#,Arraylist,Structure,Casting,我倾向于使用结构的数组列表。然后,使用foreach很容易在列表中循环 我的问题是我不能使用foreach来修改结构内容,而必须使用for和凌乱的类型转换 ((dataStructure)files[x]).name = here; 有更整洁的方法吗?是的,有:不要使用非类型化的ArrayList,这些类型被弃用,取而代之的是System.Collections.generic中的泛型类型。在您的情况下: 您仍然不能将它与foreach循环结合使用来修改结构值,但至少您不必强制转换。是的,有:

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

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

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

有更整洁的方法吗?

是的,有:不要使用非类型化的
ArrayList
,这些类型被弃用,取而代之的是
System.Collections.generic
中的泛型类型。在您的情况下:


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

是的,有:不要使用非类型化的
ArrayList
,这些类型被弃用,取而代之的是
System.Collections.generic
中的泛型类型。在您的情况下:


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

我知道这听起来很简单,但

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

另外,如果你真的在使用
ArrayList
,那么你已经在承受拆箱成本了。。。(正如康拉德所说,如果可以使用.NET2.0,那么就使用泛型。)


如果您确实坚持使用可变结构,那么使用
for
循环而不是
foreach
。但是,无论如何,请换一门课。

我知道这听起来很简单,但是

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

另外,如果你真的在使用
ArrayList
,那么你已经在承受拆箱成本了。。。(正如康拉德所说,如果可以使用.NET2.0,那么就使用泛型。)


如果您确实坚持使用可变结构,那么使用
for
循环而不是
foreach
。但是,无论如何,请换成类。

使用
ArrayList的通用版
列表

这样事情看起来好多了:

files[x].name = here;

使用
ArrayList
列表的通用版本

这样事情看起来好多了:

files[x].name = here;

是的,在某些情况下,
列表
也没有用处。在这种情况下,最古老的手法在手工作品。您应该使用while循环,而不是foreach

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

是的,在某些情况下,
列表
也没有用处。在这种情况下,最古老的手法在手工作品。您应该使用while循环,而不是foreach

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

列表看起来确实是一个更好的主意。如果出于某种原因而使用ArrayList(它们是由一些您无法控制的API返回的),那么使用ArrayList的强制转换扩展方法将它们转换为IEnumerable。IEnumerable foo=foo1.Cast();列表看起来确实是一个更好的主意。如果出于某种原因而使用ArrayList(它们是由一些您无法控制的API返回的),那么使用ArrayList的强制转换扩展方法将它们转换为IEnumerable。IEnumerable foo=foo1.Cast();乔恩。。。我认为你应该在你写的每一篇关于可变类型的文章中写一条免责声明:Di需要存储我发现的所有主机的各种细节,我需要能够循环并修改它们。我应该怎么做呢?使用类而不是结构。有一个类的实例列表。我会开始做的。我假设结构和类没有那么大区别,因为它们看起来很相似。。。我认为你应该在你写的每一篇关于可变类型的文章中写一条免责声明:Di需要存储我发现的所有主机的各种细节,我需要能够循环并修改它们。我应该怎么做呢?使用类而不是结构。有一个类的实例列表。我会开始做的。我假设结构与类没有那么大的不同,因为它们看起来非常相似。