Unity(C#)如何统计多维数组指定列元素数并对比列
解决方案
这事儿很容易搞定——把统计指定列非空元素的逻辑抽成一个可复用的方法就行,这样你想查哪列就查哪列,对比两列数据也能轻松实现。
1. 封装统计单列的方法
这个方法会接收你的多维数组和目标列索引,返回该列的非空元素数量,还加了索引合法性校验,能避免数组越界的错误:
private int CountNonNullElementsInColumn(object[,] table, int targetColumn) { // 先校验列索引是否在合法范围内 if (targetColumn < 0 || targetColumn >= table.GetLength(0)) { Debug.LogError($"目标列索引 {targetColumn} 超出范围!当前数组共有 {table.GetLength(0)} 列"); return 0; } int nonNullCount = 0; // 遍历目标列的所有行 for (int row = 0; row < table.GetLength(1); row++) { if (table[targetColumn, row] != null) { nonNullCount++; } } return nonNullCount; }
2. 调用方法并对比两列结果
现在你可以直接调用上面的方法,获取指定列的统计值,再做对比:
// 假设你的多维数组是object[,]类型的table int firstColumnCount = CountNonNullElementsInColumn(table, 0); // 统计第1列(数组索引从0开始) int secondColumnCount = CountNonNullElementsInColumn(table, 1); // 统计第2列 // 打印统计结果 Debug.Log($"第1列非空元素数量:{firstColumnCount}"); Debug.Log($"第2列非空元素数量:{secondColumnCount}"); // 对比两列数据 if (firstColumnCount > secondColumnCount) { Debug.Log("第1列的非空元素比第2列多"); } else if (firstColumnCount < secondColumnCount) { Debug.Log("第2列的非空元素比第1列多"); } else { Debug.Log("两列的非空元素数量完全相等"); }
小提醒
- 如果你用的不是
object[,]类型的数组(比如值类型数组int[,]),不存在null的概念,这时候得把判断条件改成对应值类型的“空值”定义(比如判断是否等于default(int)或者你设定的特定标记值)。 - 数组索引从0开始,你说的“第1列”对应索引0,“第2列”对应索引1,别搞混啦!
内容的提问来源于stack exchange,提问作者Ginxxx
相关产品推荐
相关产品推荐

