簡體   English   中英

C#通過其他類中的ToString調用類中的ToString

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM