C# #:";索引超出了数组的边界;

C# #:";索引超出了数组的边界;,c#,arrays,split,C#,Arrays,Split,我有一个名为SelectedItem的字符串,我想将其拆分为5个字符串,然后在文本框中使用。代码如下: string[] Details = SelectedItem.Split(','); string EmployeeID = Details[0]; string EmployeeName = Details[1]; string EmployeePay = Details[3];

我有一个名为SelectedItem的字符串,我想将其拆分为5个字符串,然后在文本框中使用。代码如下:

string[] Details = SelectedItem.Split(',');

                string EmployeeID = Details[0];
                string EmployeeName = Details[1];
                string EmployeePay = Details[3];
                string EmployeeHours = Details[4];
                decimal TempWage = int.Parse(Details[3]) * int.Parse(Details[4]);
                string EmployeeWage = TempWage.ToString();

                TbxWage.Text = "Employee " + EmployeeID + "Wage Details " + Environment.NewLine + "pay rate is " + EmployeePay + Environment.NewLine + "Working Hours is " + EmployeeHours + Environment.NewLine + "Wage is " + EmployeeWage;

这段代码应该在我单击某个按钮时运行,但我得到的却是“索引超出了数组的边界”,我不明白这是什么意思。

这意味着您吐出的字符串没有拆分为您期望的部分数

你可以在使用前检查一下

if(Details.Length == 5) 
{
   // do stuff
}

这意味着
SelectedItem.Split(',')不返回5项。因此,当您访问其中一个项目时,它不存在。
Details[x]
中提供的索引不存在,因为
x
超出了
Details
的范围。
SelectedItem
中包含哪些信息?请显示
SelectedItem
的内容,以便明确指出此代码失败的原因。我注意到
详细信息[2]
从未被使用过。这意味着在数百个问题中的每一个问题都有相同的错误信息。这意味着您超出了数组的边界,这意味着您在数组中的项没有您想象的那么多,或者您使用了错误的索引(例如,从1开始而不是从零开始,因此超出了末尾)。VS有一个调试器,它可以一步一步地通过代码来解决像这样的问题;你应该学会使用它。