8

重複の可能性:
C#の長さが不明な配列

ユーザーがそこにアイテムを入力でき、それらのアイテムが配列に格納されるプログラムを作成したいと思います。ユーザーがアイテムの量に問題がない場合、プログラムは、アイテムを取得した場合はすべてのアイテムを要求します。

問題は、サイズが不明な配列を作成できないように見えることです。私は次のようなものを使おうとしました:String[] list = new string[]{};しかし、プログラムがそこに行くと、IndexOutOfRangeExceptionが発生します。

これを行う方法はありますか?

これは完全なコードです:

bool groceryListCheck = true;
        String[] list = new string[]{};
        String item = null;
        String yon = null;
        int itemscount = 0;
        int count = 0;

        while (groceryListCheck)
        {
            Console.WriteLine("What item do you wanna go shop for?");
            item = Console.ReadLine();
            list[count] = item;
            count++;
            Console.WriteLine("Done?");
            yon = Console.ReadLine();
            if (yon == "y")
            {
                groceryListCheck = false;
                itemscount = list.Count();
            }
            else
            {
                groceryListCheck = true;
            }
        }

        for (int x = 0; x < itemscount; x++)
        {
            Console.WriteLine("Did you got the " + list[x] + "?");
            Console.ReadKey();
        }
4

5 に答える 5

15

Listの代わりに を使用しarrayます。

List<string> myList = new List<string>();
myList.Add("my list item");

すべてのアイテムを収集したら、foreachループを使用してコレクション内のすべてのアイテムを反復処理できます。

foreach(string listItem in myList)
{
    Console.WriteLine(listItem);
}
于 2013-01-30T16:26:24.647 に答える
5

A のList<string>方がはるかに簡単で柔軟性があります。

List hereを使用した多くの例があり、それらからデータを抽出するさまざまな方法を示しています。

于 2013-01-30T16:27:02.787 に答える
4

a を使用してList<string>、結果として配列が必要な場合は、.ToArray()メソッドを呼び出すことができます。

于 2013-01-30T16:28:08.810 に答える
1

変数リストをリストにするとうまくいくことがわかりました。例えば:

        bool groceryListCheck = true;
        List<string> list = new List<string>();
        String item = null;
        String yon = null;
        int itemscount = 0;

        while (groceryListCheck)
        {
            Console.WriteLine("What item do you wanna go shop for?");
            item = Console.ReadLine();
            list.Add(item);
            Console.WriteLine("Done?");
            yon = Console.ReadLine();
            if (yon == "y")
            {
                groceryListCheck = false;
                itemscount = list.Count();
            }
            else
            {
                groceryListCheck = true;
            }
        }

        for (int x = 0; x < itemscount; x++)
        {
            Console.WriteLine("Did you got the " + list[x] + "?");
            Console.ReadKey();
        }

それは完全なコードであり、私にとってはうまくいきます。

于 2013-01-30T16:35:01.947 に答える
0

この目的のためには、Hashtableを使用する必要があります。必要なだけ追加でき、作成時にサイズを指定する必要はありません。本当に単純なデータベースのようなものです。

参照: http://www.dotnetperls.com/hashtable

于 2013-01-30T16:28:15.110 に答える