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

如何在C#中创建静态锯齿数组?避免重复生成对象

如何在C#中创建静态数组存储固定名称列表

问题场景

我需要将固定的名称列表存储在静态锯齿数组中,避免每次调用生成重复数据。最初尝试的写法不符合C#语法要求:

public static string[][] nameList = new string[10][] [{"name1_1","name1_2"},{"name2_1","name2_2"},{"name3_1","name3_2"}....]; 

当前使用的方法每次调用都会创建新对象,无法返回静态实例:

public static string[][] GetNameList()
{
    string[][] nameList = new string[10][];
    nameList [0] = new string[] { "name1_1", "name1_2" };
    nameList [1] = new string[] { "name2_1", "name2_2" };
    nameList [2] = new string[] { "name3_1", "name3_2" };
    ............
    return nameList;
}

正确实现方案

方案1:静态锯齿数组的合法初始化

如果需要子数组长度不固定的锯齿数组,可直接在静态字段中完成初始化,搭配readonly确保只初始化一次:

public static readonly string[][] nameList = new string[10]
{
    new string[] { "name1_1", "name1_2" },
    new string[] { "name2_1", "name2_2" },
    new string[] { "name3_1", "name3_2" },
    // 剩余7个位置可按需赋值为null或空数组
};

方案2:静态二维数组(你找到的最优写法)

若每个子数组长度固定(比如都是2个元素),使用二维数组更简洁,同样通过static readonly保证静态且只读:

public static readonly string[,] UserList = new string[10, 2]
{
    { "UsersId0_0", "UsersId0_1" },
    { "UsersId1_0", "UsersId1_1" },
    // 补充剩余8组数据
};

核心说明

  • static readonly修饰的字段在程序启动时仅初始化一次,不会重复创建对象,完全满足避免数据副本的需求。
  • 锯齿数组适合子数组长度不一致的场景,二维数组适合行列结构固定的场景,可根据实际需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:19:59