C#自定义Product类打印对象仅输出命名空间与类名如何解决
C#自定义类打印属性信息解决方案
- 你遇到的输出类名而非属性的问题是C#的默认机制导致:所有类默认继承自
Object基类,基类自带的ToString()方法默认返回值就是完整命名空间+类名,这就是你打印时仅得到exercise_93.Product的根本原因,确实需要重写该方法实现自定义打印内容。 - 除此之外你的代码还有一个隐藏编译问题:
Product类的构造函数未加访问修饰符,C#类成员默认访问级别为private,会导致外部Program类无法调用构造函数实例化对象,需要先调整为public。
修复后的完整Product类代码
namespace exercise_93 { public class Product { public string ProductName; public double ProductPrize; public int ProductAmount; // 构造函数加public修饰符,允许外部实例化 public Product(string Name,double Prize,int Amount) { this.ProductName = Name; this.ProductPrize = Prize; this.ProductAmount = Amount; } // 重写Object基类的ToString方法自定义输出内容 public override string ToString() { // 输出格式可根据需求自行调整 return $"商品名称:{ProductName},单价:{ProductPrize},库存数量:{ProductAmount}"; } } }
修改后你原来的Console.WriteLine(banana.ToString());即可正常输出属性信息,也可以简写为Console.WriteLine(banana);,方法会自动调用对象的ToString()方法,效果完全一致。
内容的提问来源于stack exchange,提问作者thugcat85
相关产品推荐
相关产品推荐

