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

如何为泛型Grid类的数组按类型填充指定默认值?

解决泛型Grid类的数组填充问题

好的,我来帮你搞定这个需求。首先得纠正一个小细节:.NET原生数组并没有FillArray<T>()方法,所以我们需要自己实现这个填充逻辑。这里我推荐用扩展方法来实现,既符合你代码里的调用习惯,还能复用在其他数组上。

实现思路

核心思路是在泛型方法里针对不同的T类型做分支处理:当T是int时填充-1,是bool时填充false,其他类型可以默认填充default(T)(比如string填null,float填0等)。

步骤1:编写数组扩展方法

创建一个静态类来存放扩展方法,用模式匹配处理不同类型的数组,比直接判断typeof更优雅:

public static class ArrayExtensions
{
    public static void FillArray<T>(this T[] array)
    {
        // 先做null检查,避免空引用异常
        if (array == null)
            throw new ArgumentNullException(nameof(array), "数组不能为null");

        // 用模式匹配分支处理不同类型数组
        switch (array)
        {
            case int[] intArray:
                // 用.NET内置的Array.Fill高效填充-1
                Array.Fill(intArray, -1);
                break;
            case bool[] boolArray:
                // 按需求填充false(其实default(bool)就是false,这里明确指定更直观)
                Array.Fill(boolArray, false);
                break;
            default:
                // 其他类型填充默认值,比如string为null、double为0等
                Array.Fill(array, default(T));
                break;
        }
    }
}

步骤2:修改Grid类的构造函数

现在你的Grid类可以直接调用这个扩展方法了,不需要手动指定<T>,编译器会自动推断类型:

public class Grid<T>
{
    public T[] gridArray;

    public Grid(int size)
    {
        gridArray = new T[size];
        // 直接调用扩展方法,类型自动推断
        gridArray.FillArray();
    }
}

测试验证

你可以用下面的代码测试效果:

// 测试int类型的Grid
var intGrid = new Grid<int>(5);
// intGrid.gridArray的每个元素都是-1

// 测试bool类型的Grid
var boolGrid = new Grid<bool>(3);
// boolGrid.gridArray的每个元素都是false

// 测试其他类型(比如string)
var stringGrid = new Grid<string>(2);
// stringGrid.gridArray的每个元素都是null(default(string))

额外说明

  • 如果后续需要给其他类型添加特殊填充规则,只需要在switch里加对应的case即可,比如case float[] floatArray: Array.Fill(floatArray, 0.5f); break;
  • Array.Fill是.NET Core 3.0+和.NET 5+才有的方法,如果你的项目用的是旧版本(比如.NET Framework),可以替换成手动循环填充:
    for (int i = 0; i < intArray.Length; i++)
    {
        intArray[i] = -1;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:30:03