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

C# Book类编写报错:‘并非所有代码路径都返回值’问题求助

问题解决与代码修正

错误原因

你遇到的“并非所有代码路径都返回值”错误,是因为Display方法声明返回string类型,但方法体内仅执行了Console.WriteLine输出操作,没有任何return语句返回字符串值,违反了C#的方法返回规则。

代码修正要点

  • 将Display方法的返回类型从string改为void(该方法仅负责输出,无需返回值)
  • 移除Display方法的static修饰符,改为实例方法,让每个Book对象直接调用自身的展示逻辑,无需手动传递参数
  • 将类内的字段改为符合要求的属性(作业要求定义Title、Author、Year属性,原代码是字段,不符合规范)

修正后的完整代码

//filename: Book.cs
using System;

namespace MyApplication
{
  class Book 
  {
    // 定义属性(符合作业要求)
    public string Title { get; set; }
    public string Author { get; set; }
    public int Year { get; set; }

    // 实例方法:输出当前Book对象的标题和作者
    public void Display()
    {
      Console.WriteLine($"{Title} by {Author}");
    }

    static void Main(string[] args)
    {
      // 创建Book对象并赋值属性
      Book lee = new Book();
      lee.Title = "To Kill A Mockingbird";
      lee.Author = "Harper Lee";
      lee.Year = 1960;

      Book austen = new Book();
      austen.Title = "Pride and Prejudice";
      austen.Author = "Jane Austen";
      austen.Year = 1813;
      
      Book orwell = new Book();
      orwell.Title = "Nineteen Eighty-Four";
      orwell.Author = "George Orwell";
      orwell.Year = 1949;

      // 调用每个对象的Display方法
      lee.Display();
      austen.Display();
      orwell.Display();
    }
  }
}

代码说明

  1. 属性定义:用public string Title { get; set; }这种自动属性的方式,符合作业中“定义Title、Author、Year属性”的要求,比原字段更符合C#面向对象的封装规范。
  2. 实例方法Display:去掉static后,每个Book对象都能调用自己的Display方法,直接使用自身的Title和Author属性,逻辑更清晰,也更符合面向对象的设计思想。
  3. 字符串插值:用$"{Title} by {Author}"替代原有的字符串拼接,代码更简洁易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:10:27