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

C#构造函数用new实例化数组后编译器报mArr为null的空引用异常

问题根因

你的错误由**变量遮蔽(Variable Shadowing)**导致,类成员数组从未被真正初始化:
你在构造函数的if分支中,重新声明了和类成员同名的局部变量mArr/mArr2,你申请的数组空间被赋值给了仅在构造函数if分支内生效的局部变量,类的实例成员mArr/mArr2自始至终都是null,访问时自然会抛出空引用异常。

修正方法

仅需修改构造函数中的两行代码,去掉局部变量的类型声明,直接给类成员赋值即可:

public tableau(int n, string type)                             
{
    this.mLength = n;
    this.mType = type;
    if (mType == "int")                           
    {
        check = 1;
        // 去掉int[]声明,直接给类成员mArr赋值
        mArr = new int[mLength];               
    }
    else if (mType == "string")                  
    {
        check = 2;
        // 去掉string[]声明,直接给类成员mArr2赋值
        mArr2 = new string[mLength];
    }
}

另外你的代码还有两处小笔误可同步修正:

  • 第56行末尾多了多余的双引号字符
  • 第62行的占位符写法错误,将{0]改为{0}即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:24:01