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

如何修复ToString方法重写问题?Sandwich类代码报错求助

帮你修复Sandwich类的代码问题,顺便补补落下的知识点~

嘿,别着急!缺课落下的内容咱们一点点理顺,先看看你代码里的几个核心问题:

核心问题拆解

  • ToString方法重写的语法完全错误
    你现在写的public override tomatoSlices.ToString()完全不符合C#的语法规则:重写ToString必须明确返回类型string,正确的声明格式应该是public override string ToString()。而且你把ComputerPrice()方法嵌套在了ToString方法内部,C#不允许在一个方法里直接定义另一个方法(局部函数是特殊场景,这里不适用)。
  • 方法拼写错误
    你写的ComputerPrice()里少了一个字母p,正确应该是ComputePrice(),这种拼写小错误也会导致编译失败。
  • 对ToString重写的理解偏差
    ToString是为整个类生成自定义的字符串表示,不是直接调用某个字段的ToString方法。比如你需要把三明治的名称、配料、价格等信息组合成一个清晰的字符串返回,而不是只针对番茄片数。

修正后的完整代码

class Sandwich 
{ 
    public string name = "Tony"; 
    public string meat = "None"; 
    public int tomatoSlices = 1; 

    // 正确重写ToString方法,返回自定义的对象字符串描述
    public override string ToString()
    {
        // 组合所有属性信息,还可以直接调用ComputePrice计算价格
        return $"三明治详情:名称「{name}」,肉类「{meat}」,番茄片数{tomatoSlices},总价{ComputePrice():C2}";
    }

    // 将计算价格的方法放在类的直接成员位置,不要嵌套
    public double ComputePrice() 
    { 
        return 4.0 + (0.5 * tomatoSlices); 
    } 
}

关键知识点补充

  1. ToString方法的作用:所有.NET类都从object继承了ToString方法,默认只会返回类的全名,重写它可以让你的对象在被打印或转换为字符串时,展示更有意义的信息(比如上面代码里的三明治完整详情)。
  2. 类的结构规则:类的成员(字段、方法等)必须直接定义在类内部,不能嵌套在其他方法里,这是C#的基础语法规范。
  3. 字段的ToString调用:如果只是想单独获取tomatoSlices的字符串形式,直接在需要的地方写tomatoSlices.ToString()就可以,不需要重写整个类的ToString方法。

这样修改后,你的代码就能正常编译运行啦,要是还有不明白的地方随时问~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:21:18