C++ベクトルに相当するC#とは何ですか?
この機能を探しています:
連続して保存されたメモリの動的な配列を持ち、アクセスと標準の配列のパフォーマンスを低下させないこと。
私は検索していて、彼らは.NET equivalent to the vector in C++ is the ArrayList
と言っていたので:
ArrayListには連続したメモリ機能がありますか?
List<T>
を使用できます。T
が値型の場合、T
が参照型の場合はそうではない連続したメモリに割り当てられます。
例:
List<int> integers = new List<int>();
integers.Add(1);
integers.Add(4);
integers.Add(7);
int someElement = integers[1];
List<T>
を使用します。内部的には配列を使用し、配列は連続したメモリを使用します。
まず、Arraylist
またはHashtable
に近づかないでください。これらのクラスは、ジェネリックを優先して、非推奨と見なされます。それらはレガシー目的のためにまだ言語にあります。
今、あなたが探しているのはList<T>
クラスです。 Tが値型である場合、連続したメモリがありますが、Tが参照型である場合は明らかな理由でないことに注意してください。
C#には多くの参照型があります。コンテナがreferencesを連続して保存している場合でも、オブジェクト自体はヒープ全体に散在している可能性があります
CLR/C#がすぐにVector <>のサポートを取得するようです。