ここでの変数はi
andですimages
(そしてimages
、宣言を見ないと確信が持てません - フィールドである可能性もあります)。images
これは単なる参照です (のように見えます) a List<Image>
- したがって、全体images
は 4 または 8 バイトです。リスト自体はより多くのスペースを必要とします。オブジェクト自体、バッキング配列、およびいくつかのカウンターがあります。配列内の要素を交換する場合と同様に、リスト内のアイテムを交換する場合、リスト/配列内に余分なスペースを割り当てる必要はありません。
ここで割り当てを引き起こす可能性がある(そしてほぼ確実に発生する) ことの1 つはIProcessing.Color_style
、 . これは、(古いイメージを変更するのではなく) 古いイメージに基づいて新しいイメージを作成するように思えます。さらに、古いイメージを破棄していないように見えるため、そのイメージを使用している場所がこれだけである場合、いくつかの問題が発生する可能性があります。イメージはIDisposable
GDI+ ハンドルにリンクされています。それらを破棄しないと、メモリOutOfMemoryException
にリンクされていないという問題が発生する可能性があります、しかし実際には GDI+ ハンドルに。特に、ガベージ コレクションがあまり頻繁に行われないように、予備のメモリがたくさんある場合は注意が必要です。もちろん、これも少し複雑です。そのイメージを別の場所 (コントロールなど) で使用している場合は、すぐに破棄したくないからです。
行に割り当てを含める必要はありませんnew
(割り当ては、メソッド呼び出し、演算子、プロパティの背後に隠すことができます)。同様に、関連するすべての行がnew
割り当てを必要とするわけではありません (値の型は既存の場所の上に初期化されます)。