使用 ToString() 执行 WriteLine 时出现 IndexOutOfRangeException

IndexOutOfRangeException when doing a WriteLine with ToString()

我是初学者,在尝试使此代码正常工作时正在寻求帮助。 "public override string ToString()" 方法不应该被触及,因为它是正确的。但是下面的代码returns出错了。我可能做错了什么?

Unhandled Exception: System.IndexOutOfRangeException: Array index is out of range. at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0 at Jumppa.Main (System.String[] args) [0x00000] in :0 [ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Array index is out of range. at Jumppa..ctor (System.String nimi, System.String[] ajat, System.String[] paikat) [0x00000] in :0 at Jumppa.Main (System.String[] args) [0x00000] in :0

  Using System;
    using System.Collections.Generic;

class Jumppa
{
      public override string ToString()
  {
      string jumppa = nimi+"\najat:\n";
      for (int i=0; i < ajat.Length; i++)
      {
      jumppa+= ajat[i] + "\n";
      }

      jumppa += "\npaikat:\n";

      for (int i=0; i < paikat.Length; i++)
      {
      jumppa+= paikat[i] + "\n";
      }
      return jumppa;
   }

    public string nimi;
    public string[] ajat=new string[2];
    public string[] paikat=new string[2];


    public Jumppa(string nimi,string[] ajat,string[]paikat)
    {
    this.nimi = nimi;
    this.ajat[2] = ajat[2];
    this.paikat[2] = paikat[2];
    }

    public Jumppa jumppa(Jumppa J1)
    {
        return this;
    }


    static void Main(string[] args)

    {
    //System.Collections.ArrayList jumppa = new System.Collections.ArrayList();


        Jumppa[] J1=new Jumppa[3];

        J1[0]  = new Jumppa ("junior",new[] {"Wedn 9:30", "Frid 9:30"},new[]{"Gym", "Basement"});
        J1[1]  = new Jumppa ("adult",new[] {"Wedn 10:30", "Frid 10:30"},new[]{"Gym", "Basement"});
        J1[2]  = new Jumppa ("oldlady",new[] {"Wedn 11:30", "Frid 11:30"},new[]{"Gym", "Basement"});



    //jumppa.Add(J1);

        //for (int i=0; i<2; i++)
        //{
    Console.WriteLine(J1[0].jumppa(J1[0]));
        //}
        return;   
        }

    }

问题出在这些行上:

this.ajat[2] = ajat[2];
this.paikat[2] = paikat[2];

ajatpaikat 初始化为长度 2,因此有效索引为 0 和 1。访问索引 2 会导致 IndexOutOfRangeException。我怀疑你真正想做的是:

this.ajat = ajat;
this.paikat = paikat;