[英]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.