foreachの内容を変更する
質問
私は構造体の ArrayList を使用することが多いです。foreach を使用してリストを循環するのは非常に簡単です。
私が抱えている問題は、構造体の内容を変更するために foreach を使用できず、for と厄介なタイプキャストを使用する必要があることです。
((dataStructure)files[x]).name = here;
もっときちんとした方法はありますか?
解決
単純に聞こえるかもしれませんが、 変更可能な値の型にはノーと言うだけです.
彼らはほぼ 一度もない 問題の正しい解決策。あります とても いくつかの例外がありますが、クラスはほとんど いつも 進むべき道。
さらに、実際に使用している場合は、 ArrayList
そうなると、すでに開梱費用が発生してしまいます...(Konrad 氏が言うように、.NET 2.0 を使用できるのであれば、ジェネリックスを使用してください。)
どうしても変更可能な構造を使用したい場合は、 for
代わりにループします foreach
. 。でも、とにかく授業に変えてください。
他のヒント
はい、あります。これらのタイプはArrayList
におけるジェネリック型の賛成で廃止され、型なしSystem.Collections.Generic
を使用しないでください。あなたの場合: List<T>
する
あなたはまだ構造体の値を変更するために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]);
}