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

C#如何将自定义类对象正确打印输出到控制台?

问题原因

Console.WriteLine 输出引用类型对象时,默认会调用该类继承自 object 的 ToString() 方法,该方法的默认实现仅返回类的全限定名称,所以你只会看到类名而看不到内部属性的值。

解决方案

你可以根据自己的需求选择以下任意一种方案:

  • 方案1:重写Products类的ToString()方法(最推荐,一次修改全局生效)
    修改Products类的代码,新增重写的ToString方法:
public class Products {
    public string productName;
    public string productType;
    public int productCost;
    public string userName;

    // 新增重写的ToString方法
    public override string ToString()
    {
        return $"用户名:{userName} | 产品名称:{productName} | 产品类型:{productType} | 产品成本:{productCost}";
    }
}

修改后你原来的Console.WriteLine(product);代码不需要改动,直接就能输出格式化后的属性内容。

  • 方案2:输出时手动拼接属性(适合临时输出、不想修改类定义的场景)
    直接修改ListAllProducts方法里的循环输出代码,手动指定要输出的属性:
foreach (var product in listProducts) {
    Console.WriteLine($"用户名:{product.userName} | 产品名称:{product.productName} | 产品类型:{product.productType} | 产品成本:{product.productCost}");
}
  • 方案3:序列化为JSON输出(适合需要结构化输出的场景)
    如果需要输出结构化的JSON格式,可以直接用.NET内置的JSON序列化工具:
foreach (var product in listProducts) {
    Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(product));
}

你的筛选逻辑本身是没有问题的,只需要调整输出环节的代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:09:00