You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:39:35