Переопределение 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()); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д