2

我在 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(),它将打印名称空间、窗口名称和类名。有没有一种方法可以val通过引用打印出价值card

4

3 回答 3

2

使用override关键字。

public override string ToString()
{
    return number+" of "+suit;
}
于 2013-02-04T22:01:08.457 回答
1

是的,你只需要重写ToString()方法(从Object)。

public override string ToString()
{
    return val;
}

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

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

Console.WriteLine(card);

相当于:

Console.WriteLine(card.ToString());

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

Console.WriteLine(card.val);
于 2013-02-04T22:01:22.197 回答
0
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;
    }


}
于 2013-02-04T22:01:39.093 回答