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

C#中如何向object类型的数组变量追加元素?

问题核心误区

你遇到的报错来自两个基础认知偏差:

  • 初始化时赋值给output的是string[]类型的定长字符串数组,C#中所有数组都是固定长度结构,创建后长度不可修改,本身不存在Add方法,因此不管是直接用object类型引用调用,还是转成Array类型调用,都找不到Add方法。
  • ((List<string>)output).Add("string4")的写法虽然能通过编译检查,但运行时必然抛出InvalidCastException:string[]和List<string>是完全独立的类型,不存在直接转换关系,编辑器不飘红只是因为output声明为object,编译器无法在编译期校验实际存储的类型。
规范实现方式

因为原数组是定长结构,追加元素的本质是创建长度+1的新序列,写入原有内容和新元素后重新赋值给output即可。

最简洁写法(推荐)

引入LINQ命名空间后,直接调用Append扩展方法,一行代码即可完成:

// 代码文件顶部引入命名空间
using System.Linq;

// 追加元素并重新赋值
output = ((string[])output).Append("string4").ToArray();

无额外依赖写法

如果不想引入LINQ,可以直接用原生数组拷贝逻辑,不需要额外依赖:

string[] original = (string[])output;
string[] newArray = new string[original.Length + 1];
original.CopyTo(newArray, 0);
newArray[newArray.Length - 1] = "string4";
output = newArray;

频繁追加元素的优化写法

如果后续需要多次追加元素,不要每次追加都创建新数组,可以先转成List<string>完成所有操作后再转回数组赋值,减少性能开销:

List<string> tempList = ((string[])output).ToList();
// 多次追加操作都直接操作List即可
tempList.Add("string4");
tempList.Add("string5");
// 所有操作完成后统一赋值回output
output = tempList.ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:09:30