【发布时间】:2018-08-01 16:09:47
【问题描述】:
我在我写的一些我不理解的代码中发现了一个奇怪的效果。我找到了解决方法,但我想知道为什么原始代码不能按预期工作。
所以填充一个锯齿状数组,我尝试单独定义每个单元格。这导致定义的最后一个数组有 10 个副本。从此代码:
for (int i = 0; i < 10; i++)
{
serialisableHighScores.scores[i][0] = _highScores[i].date;
serialisableHighScores.scores[i][1] = _highScores[i].score;
serialisableHighScores.scores[i][2] = _highScores[i].questionsAsked;
}
而当使用一维数组作为中间时,数据按预期保存。我的意思是锯齿状数组中保存了 10 个唯一数组。从此代码:
for (int i = 0; i < 10; i++)
{
int[] scoreArray = { _highScores[i].date, _highScores[i].score, _highScores[i].questionsAsked };
serialisableHighScores.scores[i] = scoreArray;
}
【问题讨论】:
-
这是一个锯齿状数组 - 一个多维数组看起来像
scores[i, 0]。 -
为什么不使用您的 3 个属性制作一个 HighScore 对象?然后制作一个数组,列表,你的对象的任何集合?在代码中使用属性名称比尝试记住哪个值在数组的哪个索引中更容易......此外还有无数关于如何序列化/反序列化对象的示例。
-
@NightOwl888 谢谢,我的名字显然是错误的
-
@user7396598 我一次只学一件事。我只使用锯齿状数组来保存二进制格式化程序。除了更新和加载功能,分数对象无处不在
标签: c# arrays jagged-arrays