C# 通过其他 class 中的 ToString 调用 class 中的 ToString
C# Calling ToString in class by ToString in other class
我有 2 个 class。我的问题是,如何在我的第二个 class 调用 Time.
中从第一个 class 调用 Racer 调用 ToString
简化版:class B To string (return class A ToString + something from class 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;
}
但遗憾的是,这不起作用:(
有什么想法吗?
感谢帮助
编辑:这可能更接近您的意图:
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 方法以包含比赛时间以及赛车手的姓名。
由于 ToString() 不是静态的,您不能调用 Racer.ToString()。
您必须实例化一个 Racer 对象,然后对其调用 ToString()。
通常,获得可自我维护的 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);
}
}
注意当您将新字段引入 class 时 ToString
将如何自动更新。
我有 2 个 class。我的问题是,如何在我的第二个 class 调用 Time.
中从第一个 class 调用 Racer 调用 ToString简化版:class B To string (return class A ToString + something from class 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;
}
但遗憾的是,这不起作用:(
有什么想法吗?
感谢帮助
编辑:这可能更接近您的意图:
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 方法以包含比赛时间以及赛车手的姓名。
由于 ToString() 不是静态的,您不能调用 Racer.ToString()。
您必须实例化一个 Racer 对象,然后对其调用 ToString()。
通常,获得可自我维护的 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);
}
}
注意当您将新字段引入 class 时 ToString
将如何自动更新。