Консоль.Перегрузка строки записи не записывает все аргументы

#c#

#c#

Вопрос:

И еще нужно выяснить проблему контекста с c #, поэтому я создал класс с перегруженным методом, и теперь я хочу записать все методы. Не уверен, имеет ли это смысл, поэтому я здесь.

Я хочу, чтобы строка записи распечатала новый тест.

 // this is the class with the method overload
public Test(string make, string model, int year, string colour)
{
    Make = make;
    Model = model;
    Year = year;
    Colour = colour;
}

// this is what I called
Test myTest = new Test("chev", "ava", 2002, "blue");
Console.WriteLine(myTest);
 

Комментарии:

1. «это класс с перегрузкой метода» — это просто конструктор — интересная часть ToString() — это реализация, которая не показана.

2. попытался выяснить Tostring, но безуспешно.

Ответ №1:

Вы должны переопределить ToString() в своем классе, чтобы вернуть правильно отформатированную строку. Реализация по умолчанию ToString() просто вернет имя класса.

http://msdn.microsoft.com/en-us/library/ms173154 (v= против 80).aspx

Поместите это в свой класс

   public override string ToString() 
  {
     return string.Format("{0} {1} {2} {3}",Make,Model,Year,Colour);
  }
 

Комментарии:

1. Это сработало, спасибо. Существует так много способов сделать это, что это приводит меня в замешательство в режиме головного света.

Ответ №2:

Прежде всего, у вас переопределен конструктор, а не метод класса. Во-вторых, если вы хотите напечатать все значения членов класса (переданные в конструктор), вы должны написать свой собственный переопределенный метод toString . Вы можете отформатировать вывод так, как хотите отобразить:

 public override string ToString()
{
       var output = string.Format("The Car Model is {0} {1} which is made in year {2}, color {3}",Model,Make,Year,Colour);
       return output;

}
 

Комментарии:

1. Присвоение переменной форматированного значения ничего не дает — вы должны вернуть форматированное значение. Например. return string.Format(

2. извините, что я виноват! Отредактировал ответ.