如何修改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
相关产品推荐
相关产品推荐

