0

以下のようなリストを宣言し、それに 12 個の項目を追加しています。

List lstPolygonWkt = new List();

foreach (var i in items) lstPolygonWkt.Add(i.PolygonWkt);

リストには12個の要素が含まれていると考えるべきですよね? しかし驚いたことに、リストに突然 16 個のアイテムが含まれ、最後の 4 個のアイテムが null になっていることがわかりました。12 項目のはずのリストが突然 16 項目になった理由がわかりません。理由はありますか?そして、リストを12項目だけにする方法は?

いくつかのスクリーン ショットを貼り付けます。

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

8

リストは、容量を増やす必要があるたびに、メモリをチャンクで予約します。したがって、容量は 16 と報告されますが、報告は 12 のみカウントされます。Null アイテムはカウントに寄与します。

list クラスは、TrimExcess未使用のスペースを削除するメソッドを提供します。

また、コンストラクターで前もって容量を指定すると、メモリの取得は 1 回だけになります (その容量を超えないことを前提としています)。

あなたのスクリーンショットは、16 の容量を持つ 12 のカウントを示しています。メモリが機能する場合、リストはそのサイズを 2 倍にしようとします (または、少なくとも確実にデフォルトで 4 になり、次に 8、次に 16 になります)。アイテムが 12 個あるため、容量が 8 から 16 にジャンプしました。

于 2012-06-08T16:44:45.280 に答える