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

C#向空int[]数组追加值不生效,打印长度始终为0问题求助

问题产生原因

  • C# 中的int[]数组是固定长度类型,初始化完成后长度无法动态变更,你声明的是空数组,初始化后长度永久为0。
  • 你调用的Append()是LINQ提供的扩展方法,该方法不会修改原数组本身,只会返回一个包含追加后元素的新IEnumerable<int>序列,你的代码没有接收这个返回值赋值给原变量,原数组始终没有发生变化,所以打印长度永远为0。

修复方案

方案1(推荐):使用可变长度集合List<int>替代数组

List<T>是C#内置的可变长度泛型集合,原生支持动态增删元素,性能远高于反复生成新数组。
修改后的代码如下:

public partial class Form1 : Form
{
    // 将int[]替换为List<int>初始化
    public static List<int> arrayOfNumbers = new List<int>();
    public Form1()
    {
        InitializeComponent();
    }
    
    public void button1_Click(object sender, EventArgs e)
    {
        listBox1.Items.Add(textBox1.Text);
        // 调用List的Add方法直接追加元素,会修改原集合
        arrayOfNumbers.Add(Convert.ToInt32(textBox1.Text));
        // List用Count属性获取元素数量
        Console.WriteLine(arrayOfNumbers.Count);
    }
}

方案2(不推荐,仅适配必须用数组的场景):接收Append的返回值重新赋值给数组

每次追加都生成新数组替换原变量,频繁操作会产生大量冗余GC,性能较差:

// 仅修改按钮点击事件中的追加逻辑即可
arrayOfNumbers = arrayOfNumbers.Append(Convert.ToInt32(textBox1.Text)).ToArray();
Console.WriteLine(arrayOfNumbers.Length);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:54:04