Borrefts 2023-05-12 16:32 采纳率: 85.7%
浏览 31
已结题

Override ToString()的疑问

为何输出不是$25,而是$42了?这里的x和p的类型也不一致,不太能够理解,请指导一下,感谢不尽!

using System;

class Programzx
{
    public decimal price { get; set; }
    public static int x = 42;
    
    static void Main(string[] args)
    {
        Programzx p = new Programzx();
        p.price = 25;
        Console.WriteLine(p.ToString());
        Console.ReadKey();
    }
    public override string ToString()
    {
        return "$" + x.ToString();
    }
}


  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2023-05-12 21:06
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

    这是因为在你的ToString()方法中,你将x的值设置为了42。所以,当你调用p.ToString()时,它将返回"$42",而不是"$25"。

    要解决这个问题,你需要修改ToString()方法,使它返回price的值,而不是x的值。例如:

    public override string ToString()
    {
        return "$" + price.ToString();
    }
    

    这将使ToString()方法返回"$25",而不是"$42"。同时,你还需要注意,在你的类中,x是静态的,而price是实例属性。这意味着x是所有实例共享的,而price是每个实例独有的。因此,你不能将x的值设置为price的值,而应该将x的值设置为一个常量,或者将它设置为一个与实例属性无关的值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 创建了问题 5月12日