類似点と相違点の配列とArrayListを

私は関係なく、そこにC#言語は、完全なオブジェクト指向であるため、データ構造アレイは、あるので、C#で配列オブジェクトでもある任意の言語の、アレイは、最も一般的に、プログラムで使用されていると信じて
Arrayクラス、実際にはArrayクラスのインスタンスであります使用が最も頻繁に使用されると言うことができるが、我々は、このような実際には、配列クラスのオブジェクトのインスタンスを作成するときに、配列はint []の作成など、使用時にはあまり注意を取ることはありませんでした。
最近、私は慎重にC#の配列とArrayListクラス何の類似点と相違点を研究し、以下の点をまとめました。

【の配列とArrayListの違い】

#1のアレイ型の変数は、同じインスタンス(少なくとも配列の初期化の利用可能なサイズ)で宣言されなければならない、とのArrayListを単に宣言することができます。
例えば:
 [] =新しい新しいArray配列INT [する。3];
 またはINT []配列= {1,2,3} ;
 またはArrayListにます。myList =新しいArrayListを();
これらは正当であり、直接使用INT []配列。それは許容されません。

#2。Arrayオブジェクトは、均質保存し、ArrayListには、異種オブジェクトを格納することができます。
同型のオブジェクトは、オブジェクトの同じタイプを参照する場合を除き、場合[] intとして宣言された配列だろう唯一の店舗整数データ、String []型のみを格納する文字データができますが、文は、オブジェクト[]配列です。
ArrayListのデータの様々なタイプのいずれか(「オブジェクト[] _items;」カプセル化するオブジェクトのようなプライベートフィールドのそれの内部に格納Object型のオブジェクトをボックス化されているように、実際には、内部のArrayListを使用することである)を格納することができます

#3は、CLRとのホスティングに提示される
ArrayListのストレージは、必ずしも連続していないながら、常に、行に格納する配列。

#4の初期サイズ
初期化配列オブジェクトのサイズを指定するためにのみ与えられなければならない、と作成後のアレイのサイズが固定され、
そしてダイナミックのArrayListのサイズを指定することができ、そのサイズは、初期化時に指定することができ、あなたが、指定することができないオブジェクトスペースは任意に増加させることができます。

#5アレイは、任意に追加し、ArrayListの挿入および任意の位置にアイテムを削除することができながら、アイテムを削除することができません。


[類似の配列とArrayListの】

#1は、直接修正および索引のいずれかによって得ることができるインデックス(索引)を有します。
彼らが作成した#2のオブジェクトは、マネージヒープに配置されています。
#3は(IEnumerableインターフェイスを達成しているので)自分自身を列挙することができます。


[機能のいくつかのArrayListの]

私は興味深い現象を発見した研究ArrayListの第1位、容量ArrayListのプロパティ値は、項目の実際のサイズにArrayListの上変更されます
:次のコード

パブリック 静的ボイド メイン(文字列[]引数){             ArrayListにます。myList  = 新しい ArrayListを(2 )。            Console.WriteLineを(" 初期容量:" +  myList.Capacity)。int型の サイズ  = 2 ; 以下のために (int型 I  = 0 ; iは  <  iは、サイズ++  ){                 myList.Add(I)。            }             Console.WriteLineを(" 電流容量:" +    
        

 
 

            
 
            
 
            



  myList.Capacity);
            
            Console.ReadLine();
        }

サイズが2である場合、「現在容量」の出力は、2であり
、サイズが3または4である場合、「現在の容量は」4
サイズは約8 5である場合、「現在の容量は」8
サイズである場合16から9は、「現在の容量」、16
...
実験により結論を引き出すことができるたびに、それ自身の容量閾値を超える実際に存在するオブジェクトの数(ArrayList.Count)ArrayListを、次いでしきい値を自動的に倍増しています。
(初期値ははmyList時に生成しようとするように変更することができるが、結論は同じです)

2#()メソッドは、TrimToResize ArrayListクラスによって除去体積を圧縮する空きエントリArrayListのインスタンスであってもよいです。
次のコードのように:

パブリック 静的ボイド メイン(文字列[]引数){             ArrayListにます。myList  = 新しい ArrayListを(5 )。以下のために (int型 I  = 0 ; iは  < 3 ; iは++ {                 myList.Add(i)を、            }             Console.WriteLineを(" 実容量:" +  myList.Capacity)。            myList.TrimToSize();             Console.WriteLineを(" 圧縮容量:" +  myList.Capacity)。    
        

 

            
  
            



 

 
            
            Console.ReadLine();
        }

输出:
実容量:5
の圧縮容量:3

C#2.0では#3、それは<T>空間で、あなたはArrayListののジェネリック版を使用しようとすることをお勧めすなわちSystem.Collection.Generics名のリストである
、それはセキュリティの種類を確保するだけではなく、そして何のボクシングとアンボクシングがないので、これにより、オブジェクトの効率を増加させる方法。

トレースバック:http://www.cnblogs.com/agassi001/archive/2006/05/31/413540.html

ます。https://www.cnblogs.com/hdjjun/archive/2008/06/17/1223801.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33670713/article/details/94497438