【问题标题】:Default value returned by a class类返回的默认值
【发布时间】:2013-01-19 17:23:46
【问题描述】:

我在 c# 中创建了一个小的自定义类来存储扑克牌的数据:

public class Card
    {
        public string suit { get; set; }
        public int number { get; set; }
        public string val
        {
            get
            {
                return number+" of "+suit;
            }
        }
    }

如果 a 有一个 Card 类型的变量,并且刚刚打印了 card.toString(),它将打印命名空间、窗口名称和类名。有没有办法通过引用card 来打印出val 的值?

【问题讨论】:

    标签: c# wpf class properties tostring


    【解决方案1】:

    使用override 关键字。

    public override string ToString()
    {
        return number+" of "+suit;
    }
    

    【讨论】:

      【解决方案2】:

      是的,您只需重写 ToString() 方法(来自 Object)。

      public override string ToString()
      {
          return val;
      }
      

      这也是您在检查对象时在 Visual Studio 调试器中看到的默认值。

      由于这种重载,一些方法(如String.FormatConsole.WriteConsole.WriteLine、...)将使用这种新的字符串表示,而无需自己调用 ToString。

      Console.WriteLine(card);
      

      相当于:

      Console.WriteLine(card.ToString());
      

      这将等效于(在覆盖之后):

      Console.WriteLine(card.val);
      

      【讨论】:

      • 我赞成这个答案,因为它是唯一一个(在撰写本文时)同时包含代码和解释的答案。
      • 它的object 不是Object
      • @Aniket objectObject 没有区别
      • @CédricBignon 太好了,谢谢。甚至不使用 ToString() 就没有办法只返回该值,是吗?
      • @JesusSqueegee 你可以获得 card.val。我不太明白你的问题。
      【解决方案3】:
      public class Card
      {
          public string suit { get; set; }
          public int number { get; set; }
          public string val
          {
              get
              {
                  return number+" of "+suit;
              }
          }
      
          public override string ToString()
          {
              return val;
          }
      
      
      }
      

      【讨论】:

        猜你喜欢
        • 2022-08-05
        • 2021-02-09
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多