私は構造体の ArrayLists を使用する傾向があります。次に、foreach を使用してリストを循環させるのは非常に簡単です。
私が抱えている問題は、foreach を使用して構造の内容を変更することができず、for と乱雑な型キャストを使用する必要があることです。
((dataStructure)files[x]).name = here;
それを行うためのよりきちんとした方法はありますか?
はい、あります: untyped を使用しないArrayList
でください。これらの型は非推奨であり、 のジェネリック型が優先されSystem.Collections.Generic
ます。あなたの場合:List<T>
。
ループと組み合わせてforeach
構造体の値を変更することはできませんが、少なくともキャストする必要はありません。
これは単純に聞こえるかもしれませんが、変更可能な値の型にはノーと言います。
それらが問題の正しい解決策になることはほとんどありません。ごくわずかな例外はありますが、ほとんどの場合、クラスは行くべき道です。
さらに、実際に を使用している場合は、ArrayList
すでに開封コストが発生しています... (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]);
}