1

for ループのテスト条件として配列の長さを使用しています。しかし、配列に要素が 1 つしかない場合は、「インデックスが配列の範囲外でした」というエラーが表示されます。私は何を間違っていますか?ありがとう。

string templateList;
string[] template;

string sizeList;
string[] size;

templateList = textBox1.Text;
template = templateList.Split(',');

sizeList = textBox2.Text;            
size = sizeList.Split(',');

for (int i = 0; i <= template.Length; i++)
{
    for (int j = 0; j < size.Length; j++)
    {
         //do something with template[i] and size[j]
    }
}

値は textBox から取得されるため、ユーザーは 1 つの値しか入力できません。その場合、一度だけ実行する必要があります。

4

3 に答える 3

5

配列はzero-basedインデックスです。つまり、最初の要素のインデックスはゼロです。template[0] は最初の要素を指します。存在しない要素が 1 つしかなくtemplate[1] will refer to second element、おそらくout of index例外が発生する場合。

変化する

for (int i = 0; i <= template.Length; i++)

for (int i = 0; i < template.Length; i++)
于 2012-12-11T15:38:37.950 に答える
1

使用中...

for (int i = 0; i <= template.Length; i++)

...最後の反復でiは に等しくなりtemplate.Lengthます。 template[template.Length]は常に になりIndexOutOfRangeExceptionます。の最後の要素にはtemplate実際には index があるため、template.Length - 1代わりに使用する必要があります...

for (int i = 0; i < template.Length; i++)
于 2012-12-11T15:42:47.077 に答える
0

カウントはゼロから開始します。最初の for ステートメントを次のように変更する必要があります。

for (int i = 0; i < template.Length; i++) {....}
于 2012-12-11T15:41:33.747 に答える