複製
長さを初期化せずに string[] を初期化するにはどうすればよいですか? 動的配列にしたいので、何かを追加すると、長さが増加し、例外は発生しませんか?
ある種のリストを使用する必要がありますか?
長さを初期化せずに string[] を初期化するにはどうすればよいですか? 動的配列にしたいので、何かを追加すると、長さが増加し、例外は発生しませんか?
ある種のリストを使用する必要がありますか?
不明な長さの配列が必要な場合は、名前空間strings
の a を使用します。List<T>
System.Collections.Generic
List<string> myList = new List<string>();
myList.Add("First");
myList.Add("Second");
myList.Add("Third");
myList.Count // = 3
これは、固定サイズの配列を舞台裏で使用しますが、配列が大きくなり、スペースがなくなるとすべての要素を移動するという事実を隠します。
そこにある多くの言語は、配列全体をブロックとして事前に割り当てると思います。この機能を提供するラッパー クラスを使用する必要がある場合があります。Java や C++ などの言語が指定されていない場合、int[] はメモリの連続したブロックになります。新しいブロックを割り当てて古い内容をコピーするか、これを管理するラッパーを使用して、同じことを行うか、オブジェクトへのポインターを使用する必要があります。それは Java の ArrayList などになります。
ほとんどの言語では、配列は固定長です。動的な長さが必要な場合は、リストのような動的データ型を使用する必要があります。
言語がリストをネイティブにサポートしていない場合、通常は配列で実装されます。内容が長くなりすぎて配列に収まらない場合は、より長い配列が割り当てられ、内容が古い配列から新しい配列にコピーされ、最後に古い配列が解放されます。
あなたの言語またはそのライブラリの 1 つに動的な長さの型があると確信しています。
アップデート
C# の場合、コレクション クラスはSystem.Collections
名前空間にあります。System.Collections.Generic
可能であれば、ジェネリック クラスに注目する必要があります。あなたの場合、ジェネリックList<String>
がおそらく最も適しているでしょう。でもまたStack<String>
面白いQueue<String>
かも。
何語?
C#、Java、およびその他の多くの高水準言語にはArrayList
、特定のサイズを設定せずに要素を追加および削除できるデータ構造 (または類似のもの) があります。
Fortran では、ALLOCATE を使用できます。
C# を使用している場合は、ArrayList を使用します。必要に応じて動的に拡張し、何でも保持できます (これは良いことも悪いこともあります)。はい、ある種のリストを使用する必要があります。また、この using ステートメントを含めることを忘れないでください。
using System.Collections;