0
string cstring = e.Result;
            string[] delim = {"<br>","*"};
            string[] cstringl = cstring.Split(delim, StringSplitOptions.None);
            for (int i = 0; i < cstringl.Length; i++)
            {
                country_picker.Items.Add(cstringl[i]);
            }

上記のコードを使用して、country picker という名前のリストボックスにアイテムを追加していますが、indexoutofrange 例外が発生します。i<=cstring1.Length を使用して長さを確認したときにこのエラーが発生するのはなぜですか

4

1 に答える 1

2

あなたのコードには 2 つの問題があります。

以下のように更新します。

for (int i = 0; i < cstringl.Length; i++) 
{ 
    country_picker.Items.Add(cstringl[i]); 
} 

2 つの変更点は次のとおりです。

  1. for ループでの比較は、長さは「以下」ではなく「未満」である必要があります。これは、長さがカウントであるが、配列のインデックスが 0 であるため、off by oe エラーがトリガーされるためです。これが IndexOutOfRangeException の原因です。

  2. アイテムを追加するときに、ループ変数をインデックス参照として使用します。したがって、同じ (最初の) アイテムが複数回追加されることはありません。

更新
コードをもう一度見てみると、 の初期値が原因で別の問題が発生する可能性がありe.resultます。StringSplitOptions.RemoveEmptyEntriestrygin が空の値を入力する危険を冒さないように、使用してみてください。cstringlまた、少なくとも 1 つの項目を含むチェックを追加します。

于 2011-10-07T10:45:32.597 に答える