索引超出了数组的范围(C#)

我在这一行得到“索引超出数组的范围”,这有什么不对?

Kort[x, y] = Sort[x] + Valor[y] + " "; 

以下是完整的代码:

  using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace uppgift_13 { public partial class Form1 : Form { string[,] Kort = new string[4,13]; string[] Valor = new string[13]; string[] Sort = new string[4]; int x, y; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Valor[1] = "2"; Valor[2] = "3"; Valor[3] = "4"; Valor[4] = "5"; Valor[5] = "6"; Valor[6] = "7"; Valor[7] = "8"; Valor[8] = "9"; Valor[9] = "10"; Valor[10] = "Knekt"; Valor[11] = "Dam"; Valor[12] = "Kung"; Valor[13] = "Ess"; Sort[1] = "H"; Sort[2] = "R"; Sort[3] = "S"; Sort[4] = "K"; } private void LaddaKort() { for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) { Kort[x, y] = Sort[x] + Valor[y] + " "; } } } private void SkrivKort() { for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) { richTextBox1.AppendText(Kort[x, y]); } } } private void button1_Click(object sender, EventArgs e) { LaddaKort(); SkrivKort(); } } } 

从0开始数组访问,而不是1

所以,改为:

 private void Form1_Load(object sender, EventArgs e) { Valor[0] = "2"; Valor[1] = "3"; Valor[2] = "4"; Valor[3] = "5"; Valor[4] = "6"; Valor[5] = "7"; Valor[6] = "8"; Valor[7] = "9"; Valor[8] = "10"; Valor[9] = "Knekt"; Valor[10] = "Dam"; Valor[11] = "Kung"; Valor[12] = "Ess"; Sort[0] = "H"; Sort[1] = "R"; Sort[2] = "S"; Sort[3] = "K"; } 

此外,启动任何循环为0而不是1.并使条件小于长度,直到相等。 更像:

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

在C#数组中是从零开始的……

看看Kevek回答你的问题:

这个:

 for (this.x = 1; this.x <= 4; this.x++) { for (this.y = 1; this.y <= 13; this.y++) ... 

应该:

 for (this.x = 0; this.x < 4; this.x++) { for (this.y = 0; this.y < 13; this.y++) ... 

Sort是一个数组0..3,Valor是0..12。 所以你不能使用Sort [4]和Valor [13]。