2

C# プログラムで XML から値を受け取っているので、これを配列に対してテストする必要があります。値が配列で見つかった場合は true を返し、それ以外の場合は false を返します。コードは次のとおりです。

 private static bool check(string filename)
 {
 string[] arr = new string[7] {"123", "456", "789", "1012", "1314", "1516", "1781"};

   XmlDocument xml = new XmlDocument();
   xml.Load(filename);


   XmlNode x = xml.SelectSingleNode(@"/abc/def/efg/s");   
    string result = x.InnerText;
    Console.WriteLine(result);
    for (int i=0; i<arr[i].Length ;i++)
    {
        Console.WriteLine(arr[i] + " " + i);
        if (arr[i] == result)
        { return true; }

     }

    return false; 
    }

私は例外を取得しています:

System.IndexOutOfRangeException: インデックスが配列の境界の外にありました。

一致が見つからなかった場合、この例外が発生します。一致が見つかった場合は、正常に true を返します。false を返すと例外が発生するのはなぜですか: 別のメソッドからメソッドを呼び出す方法は次のとおりです。

 if (check(FileName))
 {
  // do something
  }

一致が見つからない場合は、コードの問題点を教えてください。

4

1 に答える 1

5

iループ条件が間違っています。配列の長さをテストする必要があります。

i < arr.Length
于 2013-05-17T10:33:01.810 に答える