【发布时间】:2015-10-16 09:27:27
【问题描述】:
我是 C# 编程的初学者,最近开始攻读学士学位。我想说的是,我是新人。
我已经标记了我有问题的地方。问题是我根本不明白为什么我需要在代码中添加覆盖。
对象类型有 2 个 var(第一个和其余)。
public Pair()
{
first = rest = null;
}
public Pair(Object o)
{
first = o;
rest = null;
}
public Object First()
{
return(first);
}
public Object Rest()
{
return(rest);
}
public Pair Connect(Object o)
{
rest = o;
return(this);
}
//这里是我看不懂的“覆盖字符串ToString”。为什么我需要覆盖它?
public override string ToString()
{
string output = "(";
Pair p = this;
while (p != null) {
if (p.First() == null)
output += "NULL";
else
output += p.First().ToString();
if (p.Rest() is Pair)
p = (Pair)(p.Rest());
else {
if (p.Rest() != null)
output += " . " + rest.ToString();
break;
}
output += " ";
}
output += ")";
return(output);
}
【问题讨论】:
-
您不必重写它,但它在很多情况下都很有用。就像在
Exceptions或当你debug一样。如果你这样做Console.WriteLine(new Pair());它实际上会调用ToString方法 -
每个对象都有一个 ToString,图像你有一个名为 Person 的类,它具有 FirstName、Lastname 等属性。有时最好覆盖 ToString 方法以返回 FirstName + " " + Surname。而不是默认的“NameSpace.Person”
-
永远不要写你不懂的代码。保证你自己会发现为什么重写 ToString() 是有用的。
标签: c# overriding tostring