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

如何修改Cat类以支持新增成员并创建Cat对象数组?

解决你的Cat类扩展与对象数组创建问题

嘿,我来帮你搞定这两个问题!咱们一步步来:

一、修改Cat类以支持新增成员

首先纠正你原代码里的小语法错误:public double[] position 后面少了分号。接下来,为了让Cat类更容易扩展成员,咱们可以优化结构——推荐用属性代替公共字段(更符合C#封装规范,后续扩展逻辑更灵活),或者直接添加新的字段/方法。下面是修改后的示例,我新增了age成员和对应的验证逻辑:

namespace ConsoleApp2 {
    public class Cat {
        // 用属性封装字段,兼顾灵活性和封装性
        public string Name { get; set; }
        public double[] Position { get; private set; }
        // 新增成员:年龄
        public int Age { get; private set; }

        public void SetName(string desiredName) {
            Name = desiredName;
        }

        public void SetPosition() {
            Random rnd1 = new Random();
            Position = new double[3];
            Position[0] = rnd1.NextDouble();
            Position[1] = rnd1.NextDouble();
            Position[2] = rnd1.NextDouble();
        }

        // 新增的设置年龄方法,添加简单验证
        public void SetAge(int desiredAge) {
            if (desiredAge >= 0) {
                Age = desiredAge;
            } else {
                throw new ArgumentOutOfRangeException(nameof(desiredAge), "年龄不能为负数");
            }
        }
    }

    class Program {
        static void Main(string[] args) {
            Cat cat1 = new Cat();
            cat1.SetName("Jawaharal");
            cat1.SetPosition();
            cat1.SetAge(3); // 使用新增成员

            Console.WriteLine($"Cat1: {cat1.Name}, 年龄:{cat1.Age}, 位置:({cat1.Position[0]:F2}, {cat1.Position[1]:F2}, {cat1.Position[2]:F2})");
        }
    }
}

以后要加更多成员(比如Color、Breed),直接添加对应的属性/字段和方法就行,非常灵活。

二、创建Cat对象的数组

在C#里创建对象数组有两种常用方式,给你演示一下:

方式1:先声明数组大小,再逐个初始化

static void Main(string[] args) {
    // 创建能容纳3只猫的数组
    Cat[] catArray = new Cat[3];

    // 逐个实例化并配置属性
    catArray[0] = new Cat();
    catArray[0].SetName("Tom");
    catArray[0].SetAge(2);
    catArray[0].SetPosition();

    catArray[1] = new Cat();
    catArray[1].SetName("Luna");
    catArray[1].SetAge(1);
    catArray[1].SetPosition();

    catArray[2] = new Cat();
    catArray[2].SetName("Momo");
    catArray[2].SetAge(4);
    catArray[2].SetPosition();

    // 遍历输出所有猫的信息
    foreach (var cat in catArray) {
        Console.WriteLine($"猫名:{cat.Name}, 年龄:{cat.Age}, 位置:({cat.Position[0]:F2}, {cat.Position[1]:F2}, {cat.Position[2]:F2})");
    }
}

方式2:使用数组初始化器,一次性创建赋值

static void Main(string[] args) {
    // 直接在创建数组时初始化所有对象
    Cat[] catArray = new Cat[] {
        new Cat { Name = "Tom" },
        new Cat { Name = "Luna" },
        new Cat { Name = "Momo" }
    };

    // 批量设置年龄和位置
    int[] ages = {2, 1, 4};
    for (int i = 0; i < catArray.Length; i++) {
        catArray[i].SetAge(ages[i]);
        catArray[i].SetPosition();
    }

    // 输出信息
    foreach (var cat in catArray) {
        Console.WriteLine($"猫名:{cat.Name}, 年龄:{cat.Age}, 位置:({cat.Position[0]:F2}, {cat.Position[1]:F2}, {cat.Position[2]:F2})");
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:18:36