C#中如何修改Albahari的Panda类代码输出配偶名称?
解决熊猫配偶名称输出问题
要让程序输出配偶的名称而不是默认的对象ToString结果,咱们只需要给Panda类添加名称属性,并重写ToString()方法就可以啦,具体步骤如下:
1. 给Panda类添加Name属性
首先给Panda类新增一个public string Name属性,用来存储每只熊猫的名字,这样咱们才能区分不同的个体。
2. 重写ToString()方法
默认的ToString()会返回类的完全限定名(比如ConsoleApp1.Panda),咱们重写这个方法,让它直接返回熊猫的名字,这样输出配偶对象时就会显示对应的名字了。
修改后的完整代码
using System; namespace ConsoleApp1 { public class Panda { // 新增Name属性,存储熊猫名字 public string Name { get; set; } public Panda Mate; public void Marry(Panda partner) { Mate = partner; partner.Mate = this; } // 重写ToString方法,返回熊猫的名字 public override string ToString() { return Name ?? "无名熊猫"; // 处理名字未赋值的情况 } } class Program { static void Main(string[] args) { // 创建熊猫实例时赋值名字 Panda female= new Panda { Name = "花花" }; Panda male= new Panda { Name = "和叶" }; male.Marry(female); // female.Marry(male); 这行不用重复调用,因为Marry方法里已经双向关联了 Console.WriteLine($"雄性熊猫的配偶是:{male.Mate}"); Console.WriteLine($"雌性熊猫的配偶是:{female.Mate}"); Console.ReadLine(); } } }
代码说明
- 新增的
Name属性用了自动属性的写法,方便赋值和读取; - 重写
ToString()时加了?? "无名熊猫"的判断,避免如果忘记给熊猫赋值名字时输出空字符串; - 在Main方法里创建熊猫实例时直接给Name属性赋值,这样输出配偶时就会显示对应的名字;
- 原来的
Marry方法逻辑没问题,双向关联配偶的代码不需要修改。
运行这段代码,你就能看到输出的是配偶的名字而不是默认的对象标识啦~
内容的提问来源于stack exchange,提问作者streamc
相关产品推荐
相关产品推荐

