Переопределение ToString(). Метод по умолчанию не возвращает полное имя экземпляра класса - C#
Формулировка задачи:
Добрый день. существует следующий код. Почему метод тустринг по умолчанию не возвращает полное имя экземпляра класса? Заранее спасибо за помощь!
class Money : IFormattable
{
double usd; // доллары
double grn; // гривны
double rub; // рубли
public Money(double usd)
{
if (usd < 0) throw new ArgumentOutOfRangeException("Сумма меньше нуля");
this.usd = usd;
}
public double Usd { get { return usd; } }
public double Grn { get { return usd * 23.11; } }
public double Rub { get { return usd * 52.3; } }
public string ToString(string format, IFormatProvider formatProvider)
{
if (string.IsNullOrWhiteSpace(format)) format = "U";
switch (format)
{
case "U":
return Usd.ToString("F2", formatProvider) + " долл.";
case "G":
return Grn.ToString("F2", formatProvider) + " грн.";
case "R":
return Rub.ToString("F2", formatProvider) + " руб.";
default:
throw new FormatException("Данный формат не поддерживается");
}
}
}
static void Main(string[] args)
{
Money m = new Money(1);
Console.WriteLine(m); // выведет "1.00 долл."
Console.ReadLine();
}Решение задачи: «Переопределение ToString(). Метод по умолчанию не возвращает полное имя экземпляра класса»
textual
Листинг программы
public virtual void WriteLine(Object value) {
if (value==null) {
WriteLine();
}
else {
// Call WriteLine(value.ToString), not Write(Object), WriteLine().
// This makes calls to WriteLine(Object) atomic.
IFormattable f = value as IFormattable;
if (f != null)
WriteLine(f.ToString(null, FormatProvider));
else
WriteLine(value.ToString());
}
}