C# 表索引超出范围,尽管表大于索引
我正在做一个简单的匹配游戏,我想输出一个排行榜,但是我得到了一个异常数组索引。在调试中,虽然它说表的大小是3,并且i和j都是0和1,但这对我来说很奇怪,因为这并不超出范围,因为数组大小是3。这是我的代码,用于按highscore将对象数组从最大到最小排序,感谢您的帮助C# 表索引超出范围,尽管表大于索引,c#,arrays,sorting,C#,Arrays,Sorting,我正在做一个简单的匹配游戏,我想输出一个排行榜,但是我得到了一个异常数组索引。在调试中,虽然它说表的大小是3,并且i和j都是0和1,但这对我来说很奇怪,因为这并不超出范围,因为数组大小是3。这是我的代码,用于按highscore将对象数组从最大到最小排序,感谢您的帮助 for(int i = 0; i<tabUporabnikov.Length-1; i++) { for(int j = (i+1); j<tabUporabnikov.Le
for(int i = 0; i<tabUporabnikov.Length-1; i++)
{
for(int j = (i+1); j<tabUporabnikov.Length; j++)
{
if (tabUporabnikov[i].highscore < tabUporabnikov[j].highscore)
{
Uporabnik[] zacasna = new Uporabnik[1];
zacasna[1] = tabUporabnikov[j];
tabUporabnikov[j] = tabUporabnikov[i];
tabUporabnikov[i] = zacasna[1];
}
}
}
for(int i=0;i它应该是zacasna[0]
。在这种情况下,Aray只能有一个值,数组以索引0开头。因此它应该是zacasna[0]
。最好声明一个变量而不是数组,因为您只需要存储值。将其声明为Uporabnik zacasna
我假设zacasna
有0或1个项目的空间。您正在尝试设置zacasna[1]
即使您刚刚用一个元素创建了它。但不清楚为什么要在那里创建数组。为什么不只是一个局部变量Uporabnik tmp=tabUporabnikov[j];
?(然后将tabUporabnikov[i]=tmp;
设置为块中的最后一行)。它应该是zacasna[0]
。最好声明一个变量而不是数组。因此请注意,.NET中有内置的排序方法-除非您的目的是了解如何实现排序,否则我建议使用数组.sort
或LINQ。是的,我尝试使用System.LINQ,但在将其嵌入环境中时遇到问题。我还不知道如何执行ecouse当我尝试它时,它崩溃了我所有的文件,我不得不从备份中重新开始。感谢它解决了我的问题。起初我甚至不知道它为什么解决了这个问题,但现在我明白了为什么。