[英]C# Calling ToString in class by ToString in other class
我有2节课。 我的问题是,如何在我的第二个班级“时间”中从称为“赛车手”的第一班级调用ToString。
简化版本:B类到字符串(返回A类ToString + B类中的内容)
class Racer
{
public string name, surname;
public void ReadingSeparatorsRacer(string line) //Rozdělení separatorem
{
char[] separators = new char[] { ';' };
string[] field = line.Split(separators, StringSplitOptions.RemoveEmptyEntries);
surname = field[0]; //Příjmení
name = field[1]; //Jméno
}
public override string ToString()
{
return surname + name;
}
}
class Time
{
DateTime startTime, finishTime, result;
public void ReadingSeparatorsTime(string line)
{
char[] separators = new char[] { ';', ':', '.' };
string[] field = line.Split(separators, StringSplitOptions.RemoveEmptyEntries);
}
public override string ToString()
{
string s = Racer.ToString
return "" result;
}
}
我正在考虑这样的事情:
public override ToString()
{
return Racer.ToString + result;
}
但可悲的是,这不起作用:(
有任何想法吗?
感谢帮助
由于ToString()不是静态的,因此无法调用Racer.ToString()。
您必须实例化Racer对象,然后在其上调用ToString()。
编辑:这可能更接近您的意图:
class Racer
{
public string name, surname;
public Time Time { get; set; }
public override string ToString()
{
return surname + name + "(" + Time.ToString() + ")";
}
}
class Time
{
DateTime startTime, finishTime, result;
public override string ToString()
{
TimeSpan elapsedTime = finishTime - startTime;
return elapsedTime.ToString();
}
}
每个“赛车手”都是一个“时间”属性,表示他们花了多长时间运行了比赛。 Racer.ToString方法调用Time.ToString方法以包括竞赛时间以及Racer的名称。
通常,获取可自我维护的ToString方法的最简单方法是使用一个库来实现该目的。 例如。 来自https://github.com/kbilsted/StatePrinter/blob/master/doc/AutomatingToStrings.md
class AClassWithToString
{
string B = "hello";
int[] C = {5,4,3,2,1};
// Nice stuff ahead!
static readonly Stateprinter printer = new Stateprinter();
public override string ToString()
{
return printer.PrintObject(this);
}
}
请注意,当您在类中引入新字段时, ToString
将如何自动自我更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.