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

如何创建含10个不同名称Cat实例的数组并循环调用SayMiau方法?

问题分析与修正代码

你的代码存在两个关键问题:

  • 初始化Cat数组时,仅指定了数组长度但未创建具体的Cat实例,数组元素默认都是null,直接在foreach中访问cat.Name会触发NullReferenceException
  • SayMiau被定义为静态方法,静态方法属于类而非实例,不应通过实例调用;同时无需手动传入name参数,实例本身已有Name属性可直接使用

修正后的代码如下:

// 创建数组并逐个初始化Cat实例
Cat[] cats = new Cat[10];
for (int id = 0; id < cats.Length; id++)
{
    cats[id] = new Cat();
    cats[id].Name = $"Cat{id + 1}";
}

// 遍历调用每个实例的SayMiau方法
foreach (Cat cat in cats)
{
    cat.SayMiau();
}

class Cat
{
    public string? Name;

    // 改为实例方法,直接使用当前实例的Name属性
    public void SayMiau()
    {
        Console.WriteLine($"{Name} said Miauuuuu!");
    }
}

修改说明:

  • 使用for循环初始化数组:逐个创建new Cat()实例,避免空引用问题,同时给每个实例的Name赋值为Cat1到Cat10
  • 将SayMiau改为实例方法:去掉static关键字,方法内部直接通过实例的Name属性获取名称,调用时无需传参
  • 优化输出格式:使用字符串插值替代占位符,代码更简洁直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:20:40