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

C#新手(原C++开发者):List存储Cigarette对象后如何打印实际数据

解决C#中打印自定义对象显示类名的问题

嘿,刚从C++转C#的话遇到这个问题太正常啦!咱们来一步步搞定它~

为什么会输出类名?

当你调用Console.WriteLine打印自定义对象时,默认会调用这个对象继承自Object类的ToString()方法,而这个方法的默认实现就是返回类的完全限定名(也就是你看到的InventoryManagement.Cigarette),这和C++里默认打印对象地址的逻辑有点类似,但实现方式不同。

两种解决方案,按需选择:

方案1:重写Cigarette类的ToString()方法(推荐)

这是最通用的做法,修改一次后,不管在哪里打印这个对象,都会自动显示你想要的内容。只需要在你的Cigarette类里添加这段代码:

public class Cigarette
{
    public string Title { get; set; }
    public int MaxInventory { get; set; }

    // 构造函数
    public Cigarette(string title, int maxInventory)
    {
        Title = title;
        MaxInventory = maxInventory;
    }

    // 重写ToString方法,自定义输出格式
    public override string ToString()
    {
        return $"香烟品牌: {Title}, 最大库存: {MaxInventory}";
    }
}

之后你原来的代码:

marlboro.ForEach(Console.WriteLine);

就能直接输出你期望的内容啦!

方案2:打印时直接指定属性(临时场景适用)

如果不想修改Cigarette类,也可以在打印的时候直接访问对象的属性,手动拼接输出内容:

marlboro.ForEach(cigarette => 
    Console.WriteLine($"香烟品牌: {cigarette.Title}, 最大库存: {cigarette.MaxInventory}")
);

这种方式适合临时调试或者只需要在某一处打印的场景。

小提示(C++转C#的小差异)

在C++里我们通常会重载<<运算符来实现对象的打印,而在C#里,重写ToString()是标准做法,它不仅适用于控制台打印,在调试窗口、日志输出等场景也会自动生效哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:34:54