Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#使用for循环将数组元素移位1_C#_Arrays - Fatal编程技术网

c#使用for循环将数组元素移位1

c#使用for循环将数组元素移位1,c#,arrays,C#,Arrays,我正在用c#制作一个游戏,它有一个记分牌,上面有前5名球员。 我成功了,至少我认为我成功了。。。 脚本在数组中输入玩家姓名和分数的值,但存在一个问题。它只是删除了最后一个,所以如果你取得了最好的分数,你就变成了1,但是旧的1会被删除,2永远是2,除非有人对那个地方做出结果。我的问题是如何将数组从某个地方移动一个(这取决于玩家的结果)并删除最后一个字符串 编辑:不能使用列表,因为我用那个数组做了很多事情。 像这样: string topScores = sbName[i].Substring(4)

我正在用c#制作一个游戏,它有一个记分牌,上面有前5名球员。 我成功了,至少我认为我成功了。。。 脚本在数组中输入玩家姓名和分数的值,但存在一个问题。它只是删除了最后一个,所以如果你取得了最好的分数,你就变成了1,但是旧的1会被删除,2永远是2,除非有人对那个地方做出结果。我的问题是如何将数组从某个地方移动一个(这取决于玩家的结果)并删除最后一个字符串

编辑:不能使用列表,因为我用那个数组做了很多事情。 像这样:

string topScores = sbName[i].Substring(4);
int topScoreInt = Convert.ToInt32(topScores);

如果您需要使用数组而不是
列表
(它有一个方便的
插入
方法),您可以从最后一个值开始工作,用它的前一个值替换每个值,直到找到要更新的值:

int place = 2; // Meaning 3rd place, since arrays are zero-based

// Start at end of array, and replace each value with the one before it
for (int i = array.Length - 1; i > place; i--)
{
    array[i] = array[i - 1];
}

// Update the current place with the new score 
array[place] = score;

由于您只有5个项目,而且评分通常很少,因此一些基本LINQ代码将更容易阅读:

class Score { public string Name; public int Result;}
Score[] scores = new Score[5];

var newScore = new Score {Name = "Foof", Result=9001};
scores = scores
   .Where(s => s != null) // ignore empty
   .Concat(Enumerable.Repeat(newScore,1)) // add new one
   .OrderByDescending(s => s.Result)  // re-sort
   .Concat(Enumerable.Repeat((Score)null,4)) // pad with empty if needed
   .Take(5) // take top X
   .ToArray(); // back to array

旁注:您最好使用
列表
或。

能否与我们共享插入的源代码,以便我们看到您的尝试?您最好使用
列表
插入
。我想您是在根据索引更新列表。而是使用Insert方法在第一个位置插入记录并删除最后一个。不要。只需使用一个
SortedList
。您有一个非常简单的方法:创建一个包含六项的数组,其中显示前五项。当一个新的分数到达时,把它放在第六个点,并对数组进行排序。因为这是关于高分的,所以你可以使用这个值,并以相同的方式前进,只要分数高于当前索引的分数,同时还有位置的数字。你如何初始化数组?如果你能分享你的代码,那将非常有帮助。看起来您也应该创建一些类,而不是解析数组字符串。。。这一行很快就变得混乱起来:
stringtopscores=sbName[i].Substring(4)sbName[i]
中少于4个字符,则code>可能会出现问题。我使用的这个模型从来都不少于4个,即URS.300(前3个名称,点后是播放器的点数)。我假设
place
从1开始,在我的示例中不是零。我已经更新了我的样品