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

C#控制台RPG游戏:构造函数中数组值未赋值问题求助

问题原因与解决方案

你遇到的问题是只声明了数组变量,但没有初始化数组实例。C#中引用类型(包括数组)声明后默认是null,直接给索引赋值会因为没有指向实际的数组内存而报错,和访问修饰符无关。

修复代码的两种方式

方式一:在构造函数中先初始化数组再赋值

class Warrior
{
    public string[] attacks, weapons, items;

    // Constructor
    public Warrior()
    {
        // 先为数组分配内存,这里设置长度为1(对应你要赋值的索引0)
        attacks = new string[1];
        weapons = new string[1];
        items = new string[1];

        attacks[0] = "Basic Slash";
        weapons[0] = "Basic Sword";
        items[0] = "Basic Health Potion";
    }
}

方式二:声明时直接初始化数组

如果初始值固定,也可以在变量声明阶段直接完成初始化,这样构造函数里不需要额外赋值:

class Warrior
{
    // 声明时直接初始化数组并赋值
    public string[] attacks = new string[] { "Basic Slash" };
    public string[] weapons = new string[] { "Basic Sword" };
    public string[] items = new string[] { "Basic Health Potion" };

    public Warrior()
    {
        // 无需额外操作
    }
}

补充说明

如果后续需要动态扩展数组元素数量,建议改用List<string>,它支持动态添加元素,比固定长度数组更灵活,示例:

class Warrior
{
    public List<string> attacks = new List<string>();
    public List<string> weapons = new List<string>();
    public List<string> items = new List<string>();

    public Warrior()
    {
        attacks.Add("Basic Slash");
        weapons.Add("Basic Sword");
        items.Add("Basic Health Potion");
        // 后续可以随时添加新元素
        attacks.Add("Power Strike");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:45:39