【发布时间】:2020-05-02 08:04:02
【问题描述】:
class Board
{
int[,] ActiveXY = new int[9, 3];
private int NumOfActiveCells()
{
int counter = 0;
for (int i = 0; i < 9; i++)
{
if (ActiveXY[i, 2] == 1) counter++;
}
return counter;
}
...
在这段代码中,ActiveXY 是一个由 9 个单元组成的二维数组,每个单元具有 3 个属性:[0] 是 X,[1] 是 Y,[2] 是它是否处于活动状态,为 0 表示处于非活动状态1 表示活跃。
我正在尝试使用 NumOfActiveCells() 检查有多少单元格处于活动状态,尽管它有效,但我仍然希望看看是否有更短甚至单行的方法来执行此操作。 也许使用 LINQ 的东西?
编辑:更改“更好”=>“更短”。我错误地解释了自己。我确实同意我的代码很好,但我只是想看看是否有更短的方法,谢谢你的回复!
【问题讨论】:
-
“更好”是一个有争议的概念。您似乎认为单线比多线更好,但有些人不同意。对我来说,通常有两件事很重要,我试图在它们之间找到平衡:可读性和速度。按照这些标准,您的代码非常好。它易于阅读,您只能访问您需要的数组部分(活动标志),因此它也适用于速度。我不再认为一切都需要花哨的单行代码,并且对可读且快速的代码感到满意。
-
感谢您的评论,我 100% 同意您的意见。我修正了我的解释。
标签: c# linq multidimensional-array counter