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

重写ToString()方法异常:输出List类型而非电影信息求助

解决List输出默认类型名的问题

嘿,我一眼就看出问题所在啦!你现在肯定是直接把整个List<Movie>对象丢给文本框输出了对吧?

问题根源

虽然你已经在Movie类里重写了ToString(),但List本身的ToString()方法默认只会返回它的类型全称(就是你看到的System.Collections.Generic.List1[Problem_2.Movie]`),它不会自动帮你遍历每个Movie去调用它们的自定义ToString()。

第一步:先完善你的Movie类(补全代码+确保ToString()正确)

先把你没写完的duration属性补全,然后确保ToString()重写到位:

class Movie 
{
    private string movieName { get; set; }
    private int number { get; set; }
    private string releaseDate { get; set; }
    private string location { get; set; }
    private string genre { get; set; }
    private int rating { get; set; }
    private int duration { get; set; } // 补全set访问器

    // 重写ToString,返回你想要的电影信息格式
    public override string ToString()
    {
        // 这里可以根据你的需求调整格式,比如换行或者用分隔符
        return $"【电影】{movieName} | 编号:{number} | 上映日期:{releaseDate} | 类型:{genre} | 评分:{rating}/10 | 时长:{duration}分钟";
    }
}

第二步:正确输出List里的所有电影信息

不要直接输出List对象,要遍历每个Movie,把它们的ToString()结果拼接起来再输出到文本框,推荐两种简单方法:

方法1:用string.Join快速拼接(最简洁)

// 假设你的电影列表是movieList
List<Movie> movieList = new List<Movie>();
// 先往列表里添加电影数据...

// 用换行符把每个电影的信息拼接成一个字符串
string allMovieInfo = string.Join(Environment.NewLine, movieList);
// 赋值给文本框
yourTextBoxName.Text = allMovieInfo;

方法2:用StringBuilder遍历拼接(适合复杂格式)

如果后续要加更多格式处理,用StringBuilder更高效:

StringBuilder sb = new StringBuilder();
foreach (Movie movie in movieList)
{
    sb.AppendLine(movie.ToString());
    // 还可以加分割线之类的:sb.AppendLine("------------------------");
}
yourTextBoxName.Text = sb.ToString();

这样操作后,文本框里就会显示每个电影的详细信息,而不是那个讨厌的类型名啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:22:56