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

如何简化锯齿数组的数据返回及无null校验迭代操作?

这简直太常见了!完全可以通过给工厂类添加便捷的迭代器方法来解决这个问题,让用户彻底摆脱繁琐的null校验和双重循环。我给你几个实用的实现方案:

方法1:返回过滤后的扁平枚举(最推荐)

直接给你的工厂类新增一个方法,内部自动处理双重遍历和null校验,返回一个只包含有效元素的扁平枚举。用户拿到后直接foreach就行,完全不用关心底层数组结构。

以C#为例:

public class GridFactory
{
    // 你已有的Generate方法
    public T[][] Generate<T>()
    {
        // 原有逻辑生成带大量null的锯齿数组
    }

    // 新增便捷方法:返回所有非null的有效元素
    public IEnumerable<T> GetValidItems<T>()
    {
        var grid = Generate<T>();
        foreach (var row in grid)
        {
            if (row == null) continue; // 先跳过空行
            foreach (var item in row)
            {
                if (item != null)
                {
                    yield return item;
                }
            }
        }
    }
}

用户使用时的代码会极度简洁:

var factory = new GridFactory();
foreach (var validItem in factory.GetValidItems<MyDataType>())
{
    // 直接处理有效元素,完全不用管null和数组结构
}
方法2:保留行结构的过滤枚举

如果用户需要知道元素所属的行,可以返回按行分组的有效元素集合,自动过滤空行和行内的null:

public IEnumerable<IEnumerable<T>> GetValidRows<T>()
{
    var grid = Generate<T>();
    foreach (var row in grid)
    {
        if (row == null) continue;
        var validRow = row.Where(item => item != null);
        if (validRow.Any()) // 跳过全是null的行
        {
            yield return validRow;
        }
    }
}

用户使用时:

foreach (var validRow in factory.GetValidRows<MyDataType>())
{
    foreach (var item in validRow)
    {
        // 处理该行的有效元素,无需校验null
    }
}
方法3:扩展方法(无法修改原工厂类时用)

要是你没办法修改已有的工厂类代码,就写个扩展方法来封装过滤逻辑:

public static class GridFactoryExtensions
{
    public static IEnumerable<T> GetValidItems<T>(this GridFactory factory)
    {
        var grid = factory.Generate<T>();
        // 复用上面的遍历过滤逻辑
        foreach (var row in grid)
        {
            if (row == null) continue;
            foreach (var item in row)
            {
                if (item != null) yield return item;
            }
        }
    }
}

通过这些方式,用户完全不用再手动处理双重索引和null校验,只需要调用你提供的便捷方法就能专注于业务逻辑,体验会好很多。

内容的提问来源于stack exchange,提问作者WDUK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:15:16