我在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
的值?
答案 0 :(得分:2)
使用override
关键字。
public override string ToString()
{
return number+" of "+suit;
}
答案 1 :(得分: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);
答案 2 :(得分: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;
}
}