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

已实例化的Object[]数组能否新增元素?附C#示例代码

问题解答

数组的核心特性

在C#中,普通数组(如你代码中的ObjectList[])一旦初始化完成,长度是固定的,无法直接修改数组长度来新增元素。所以你不能直接给已创建的长度为4的object1数组添加第5个元素。

借助临时数组实现"扩容"

虽然数组本身长度不可变,但可以通过临时数组转移元素的方式,间接实现类似新增元素的效果,具体步骤如下:

  1. 创建一个长度比原数组大1的新数组;
  2. 将原数组的所有元素复制到新数组中;
  3. 将新数组赋值给原数组变量;
  4. 给新数组的最后一个位置添加从Console.ReadLine()获取的元素。

示例代码:

static void Main(string[] args)
{
    Object objects = new Object();
    objects.object1 = new ObjectList[4];
    // 给原数组的元素初始化(示例)
    for (int i = 0; i < objects.object1.Length; i++)
    {
        objects.object1[i] = new ObjectList { name = $"原有元素{i}" };
    }

    // 扩容并新增元素
    ObjectList[] tempArray = new ObjectList[5];
    Array.Copy(objects.object1, tempArray, objects.object1.Length);
    objects.object1 = tempArray;
    
    Console.WriteLine("请输入新元素的name:");
    string newName = Console.ReadLine();
    objects.object1[4] = new ObjectList { name = newName };
}

public class Object
{
    public ObjectList[] object1;
}

public class ObjectList
{
    public string name;
}

更简便的方案:使用List<T>

如果需要频繁动态添加元素,更推荐使用C#内置的List<T>集合,它支持自动扩容,直接调用Add()方法就能添加元素,无需手动处理数组复制:

修改后的代码示例:

static void Main(string[] args)
{
    Object objects = new Object();
    // 初始化容量为4的List(容量可自动扩容)
    objects.objectList = new List<ObjectList>(4);
    // 添加初始元素(示例)
    for (int i = 0; i < 4; i++)
    {
        objects.objectList.Add(new ObjectList { name = $"原有元素{i}" });
    }

    // 直接新增元素
    Console.WriteLine("请输入新元素的name:");
    string newName = Console.ReadLine();
    objects.objectList.Add(new ObjectList { name = newName });
    // 此时List的元素数量为5
}

public class Object
{
    // 将数组替换为List<ObjectList>
    public List<ObjectList> objectList;
}

public class ObjectList
{
    public string name;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:06:32