0

2次元配列を初期化し、インデックス5以降にnull値が含まれています。配列値をチャートコントロールに追加しようとしています。Console.WriteLineに値を表示しようとすると、例外は発生しませんでしたが、チャートシリーズに追加すると、例外は「インデックスが配列の境界外にありました」です。誰でも私を助けることができますか?チャートコントロールのバーが限られているからですか?

try
{
    //females age range
    string[,] gAge = new string[10, 2];
    gAge[0, 0] = "F.13-17";
    gAge[0, 1] = yf.f1317.ToString();
    gAge[1, 0] = "F.18-24";
    gAge[1, 1] = yf.f1824.ToString();
    gAge[2, 0] = "M.25-34";
    gAge[2, 1] = yf.m2534.ToString();
    gAge[3, 0] = "M.13-17";
    gAge[3, 1] = yf.m1317.ToString();
    gAge[4, 0] = "M.18-24";
    gAge[4, 1] = yf.m1824.ToString();

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

        if (gAge[i, 0] == null)
        {
            break;
        }
        else
        {
            Console.WriteLine(gAge[i, 0].ToString());
            string[] seriesArray = { gAge[i, 0].ToString() };
            Series series = this.chart1.Series.Add(seriesArray[i]);
        }

    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
4

2 に答える 2

1

問題は、配列全体の長さを取得していることです。この場合、配列内gAge.Lengthのインデックスの総数である20に等しくなります。これは、最初の配列次元の境界を超えています。gAge.GetLength(0)代わりに使用してみてください。

于 2013-01-28T04:33:48.213 に答える
0
 try
        {
            chart1.Series.Clear();
            chart1.Titles.Clear();
            chart1.Visible = true;

            //CODES HERE TO GET THE SELECTED PAGE FROM DROP DOWN LIST

            var fb = new FacebookClient(myToken.Default.token);
            var query = string.Format("SELECT metric, value FROM insights WHERE object_id=132414626916208 AND metric='page_fans_gender_age' AND period = period('lifetime') AND end_time = end_time_date('2013-01-18')");

            dynamic parameters = new ExpandoObject();
            parameters.q = query;
            var data = fb.Get<genderAgeDataII>("fql", parameters);

            genderAge yf = (genderAge)data.data[0].value;

            //females age range
            string[,] gAge = new string[10, 2];
            gAge[0, 0] = "F.13-17";
            gAge[0, 1] = yf.f1317.ToString();
            gAge[1, 0] = "F.18-24";
            gAge[1, 1] = yf.f1824.ToString();
            gAge[2, 0] = "M.25-34";
            gAge[2, 1] = yf.m2534.ToString();
            gAge[3, 0] = "M.13-17";
            gAge[3, 1] = yf.m1317.ToString();
            gAge[4, 0] = "M.18-24";
            gAge[4, 1] = yf.m1824.ToString();

            for (int i = 0; i < gAge.GetLength(0); i++)
            {

                if (gAge[i, 0] == null)
                {
                    break;
                }
                else
                {

                   string[] seriesArray = { gAge[i,0] };

                   // Add series.
                   for (int w = 0; w < seriesArray.Length; w++)
                   {
                       // Add series.
                       Series series = this.chart1.Series.Add(seriesArray[w]);

                       int[] pointsArray = new int[seriesArray.Length];
                       pointsArray[w] = Convert.ToInt32(gAge[i, 1]);
                       series.Points.Add(pointsArray[w]);
                   }


                   Console.WriteLine(gAge[i, 0].ToString());
                }

            }
于 2013-01-28T07:41:56.600 に答える