IFormattable в C#
Интерфейс IFormattable даёт типу свой ToString: он сам решает,
как обработать строку формата и IFormatProvider. Так устроены
встроенные числа и даты. Свой тип может поддержать краткий код
"h" и обычный вывод для любого другого кода.
Код "h" собирает краткую запись с решёткой. Другой код или null вернёт обычное число:
using System.Globalization;
Score s = new Score(12);
IFormattable f = s;
Console.WriteLine(f.ToString("h", CultureInfo.InvariantCulture)); // выведет "#12"
readonly struct Score(int value) : IFormattable
{
public string ToString(string? format, IFormatProvider? provider)
{
return format == "h" ? $"#{value}" : value.ToString(provider);
}
}
Сделайте для денежной суммы краткий вид: код "s" должен давать "usd" и число. Выведите такой вид для суммы 20.
Выведите обычную запись значения 40 через invariant-культуру.