C# 索引在数组C的边界之外#

C# 索引在数组C的边界之外#,c#,arrays,C#,Arrays,我试图用数组简化一些长语句,我在这里发现了类似的问题,但我无法找出哪里出了错。代码如下: if (coursechoice.Text == ("Subsidiary Diploma")) { var grade = new[] { grade1, grade2, grade3, grade4, grade5, grade6, grade7, grade8, grade9, grade10, grade11, grade12, grade13, grade14

我试图用数组简化一些长语句,我在这里发现了类似的问题,但我无法找出哪里出了错。代码如下:

if (coursechoice.Text == ("Subsidiary Diploma"))
{               
    var grade = new[] { grade1, grade2, grade3, grade4, grade5, grade6, grade7, grade8, grade9, grade10, grade11, grade12, grade13, grade14, grade15, grade16, grade17, grade18 };
    var unitselect = new[] { unitselect1, unitselect2, unitselect3, unitselect4, unitselect5, unitselect6, unitselect7, unitselect8, unitselect9, unitselect10, unitselect11, unitselect12, unitselect13, unitselect15, unitselect16, unitselect17, unitselect18 };

for (var i = 3; i < 18; i++)
{                   
    grade[i].Enabled = false;
    unitselect[i].Enabled = false; // I get index out of bounds of the array here
}   
if(coursechoice.Text==(“附属文凭”))
{               
var年级=新[]{一年级、二年级、三年级、四年级、五年级、六年级、七年级、八年级、九年级、十年级、十一年级、十二年级、十三年级、十四年级、十五年级、十六年级、十七年级、十八年级};
var unitselect=new[]{unitselect1,unitselect2,unitselect3,unitselect4,unitselect5,unitselect6,unitselect7,unitselect8,unitselect9,unitselect10,unitselect11,unitselect12,unitselect13,unitselect15,unitselect16,unitselect17,unitselect18};
对于(变量i=3;i<18;i++)
{                   
等级[i]。启用=错误;
unitselect[i].Enabled=false;//我在这里得到的索引超出了数组的界限
}   

代码
grade[I].Enabled=false;
可以正常工作,但是只有unitselect不起作用,如果您能提供帮助的话,谢谢。

unitselect只包含17项,没有
unitselect14
我不确定您使用循环逻辑的目的是什么,但是因为您使用的是数组(它实现了IEnumerable),使用LINQ解决问题可能会更好

例如:

grade.Skip(4).Take(15).ToList().ForEach(g => g.Enabled = false);
Linq文档:

更新

根据@Gusdor的评论,标准foreach循环会更好

foreach(var g in grade.Skip(4).Take(15)) { 
    g.Enabled = false; 
} 

数组索引从零开始u在unitselect数组中有17个元素,所以for应该是

        for (var i = 3; i < 17; i++)
for(变量i=3;i<17;i++)

该错误意味着在这种特定情况下,两个数组中的元素数量不同。
unitselect[]
。最终for循环会遇到超过数组长度的某个i值。

数组中缺少unitselect14元素。:)

unitselect14丢失了你的回答有点慢。很久以前,每个人都说过同样的话。呵呵……当我在键入别人的帖子时。必须提高键入速度。:-1 for
Foreach
。你创建一个新列表的唯一目的就是使用这个方法,然后扔掉那个对象。没有理由为了避免传统的
foreach
,它与
IEnumerable
foreach具有更大的亲和力(grade.Skip(4.Take)(15)){g.Enabled=false;}对于那些保持计数的人来说,更少的字符:仅仅是我的2个PiNTH,我不认为.For是LINQ本身。这是列表类中的一个实例方法。这真的回答了这个问题吗?OP知道他的错误在哪里吗?我想没有。谢谢你们的评论,同时我也很感激你们所说的。我想这个答案可能不是解决老年退休金问题的关键,它很可能是介绍了一些让老年退休金计划今天学到了新东西的东西。这比一大堆这么多的要点更有价值。谢谢,我不能相信我忽略了hahabhau punyat job aasel tar paha na mala…asp.net 2年的经验kadhicha ahes?是链接v在卡萨拉(位于卡伦开放区的办公室)TCS校外大道ahe