2016-10-06 10 views
2

リストには、CountとそのCapacityを取得するためのプロパティがあります。すべてのコレクションと同様に、辞書にはCountというプロパティもあり、指定できる数はconstructorsであり、Addメソッドのドキュメントではそれを記述しているため、容量があります。しかし、現在の容量が何であるかを辞書に照会する方法はありません。C#ディクショナリの現在の容量はどのように決定できますか?

辞書の現在の容量を取得する方法がない場合でも、再割り当てが発生する可能性を予測する方法はありますか?

+1

:http://stackoverflow.com/questions/2760931/initial-capacity-を挿入し、ここでは、実際のコードでYES再配分は、それぞれにトリガーされるあなたの質問、に答えるために

of-collection-types-eg-dictionary-list –

+1

辞書は違っていて、類似のハッシュコードを持つアイテムを含むバケットを使用します。 – Maarten

+1

related:http://stackoverflow.com/a/24366862/261050 – Maarten

答えて

0

辞書は正確にリストのようには機能しません。 Microsoftによって提供されるsource codeを調べる場合。複数のプライベートフィールドが役立つ可能性があります。

これはカプセル化された実装の詳細であることに注意してください。プロダクションコードに名前として使用するべきではないことに注意してください。

内部配列int[] bucketsEntry[] entriesがあります。 int freeListint freeCountもあります。リフレクションを使用してこれらの周りを遊ぶことができます。関連

int index; 
if (freeCount > 0) 
{ 
    index = freeList; 
    freeList = entries[index].next; 
    freeCount--; 
} 
else 
{ 
    if (count == entries.Length) 
    { 
     Resize(); 
     targetBucket = hashCode % buckets.Length; 
    } 
    index = count; 
    count++; 
} 
関連する問題