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