Pergunta

I tendem a usar ArrayLists de estruturas. Em seguida, é muito fácil de percorrer a lista com um foreach.

O problema que tenho é que eu não posso usar um foreach para modificar o conteúdo estruturas e tem que usar um para e typecasts desarrumado.

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

Existe uma maneira mais arrumado para fazê-lo?

Foi útil?

Solução

Eu sei que isso soa simplista, mas apenas dizer não aos tipos mutáveis ??valor .

Eles são quase não a solução certa para o problema. Há um muito algumas exceções, mas as classes são quase sempre o caminho a percorrer.

Além disso, se você está realmente usando um ArrayList então você vai ser incorrer um custo unboxing já ... (Como Konrad diz, se você pode usar o .NET 2.0, em seguida, usar os genéricos.)

Se você realmente insistir em usar estruturas mutáveis, em seguida, usar um loop for vez de foreach. Mas, por favor, por favor mude para aulas de qualquer maneira.

Outras dicas

Sim, existe: não usar um ArrayList untyped, estes tipos são preteridos em favor dos tipos genéricos em System.Collections.Generic. No seu caso:. List<T>

Você ainda não pode usá-lo em conjunto com um loop foreach modificar valores de estrutura, mas pelo menos você não tem que elenco.

Use o genérico versão do ArrayList:. List<DataStructure>

Desta forma, as coisas parecem muito melhor:

files[x].name = here;

Sim, há casos em que List <T> também não é útil. Nesses casos, o truque mais velho dos trabalhos manuais. Em vez de foreach, você deve usar enquanto loop:

while (listItem.Count >0)
{
//do operation with 0th element of List Item always like
 deletefunc(lisItem[0]);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top