【问题标题】:Counting items in specific dimension of multidimensional array (C#)计算多维数组特定维度中的项目(C#)
【发布时间】:2011-05-13 08:51:21
【问题描述】:

我正在使用多维数组来跟踪答案:

public string[,] answersArray = new string[50, 10];

数组的第一个维度跟踪问题(最多 50 个问题),而第二个维度跟踪每个问题的答案(最多 10 个)。 每个问题的答案数量是可变的。 加载问题后,我想确定该特定问题的答案数量。然后我可以在 for 循环中使用该数量来加载并显示这些答案。 有没有一种简单的方法来获得这个,还是我必须自己写一些东西? 我知道我可以声明另一个数组来跟踪每个问题的答案数量,然后用它来完成它,但我只是想知道是否有更简单的解决方案。

【问题讨论】:

    标签: c# arrays count multidimensional-array


    【解决方案1】:

    听起来您不想要一个 矩形数组,而是一个 数组数组,例如

    string[][] answers = new string[50][];
    

    然后你可以用正确大小的数组填充每个数组。

    但是,另一种选择是完全避免使用数组 - 使用 List<T>,它会随着您的需要而增长。特别是,您可能希望有一个List<Question>,其中Question 包含问题文本本身和一个List<Answer>(或者可能只是一个List<string>)作为答案。

    数组需要预先调整大小的事实是它们应该是considered "somewhat harmful"的原因之一。

    如果您真的想坚持原来的方法,那么显然您知道数组的每个“行”中有 10 个元素 - 您必须循环查找第一个null 值(如果有)表示实际上填充了多少答案。

    【讨论】:

    • 回想起来使用列表确实会更好。自从我上次用 C# 编写代码已经有一段时间了,而且由于我正在编写的应用程序非常小,所以我开始使用数组。感谢您的洞察力,这非常有帮助!
    【解决方案2】:
    var dim1 = answersArray.GetLength(0); // 50
    var dim2 = answersArray.GetLength(1); // 10
    

    【讨论】:

    • 我也在其他地方找到了这个答案,但正如我所说,数组第二维中的答案数量是可变的。问题 1 可能有 4 个答案,而问题 2 可能有 6 个答案,而问题 3 可能有 10 个。
    • 然后参考 John skeets 的回答 :)
    猜你喜欢
    • 2011-07-08
    • 2012-01-07
    • 2012-07-18
    • 1970-01-01
    • 2011-10-09
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多