Интерфейс IFormattable
Метод
IFormattable.ToString принимает
format и IFormatProvider.
В шаблоне
string.Format
вызовется автоматически. Запись в
буфер без лишней строки -
ISpanFormattable.
Синтаксис
public string ToString(string? format, IFormatProvider? provider);
string text = string.Format(
CultureInfo.InvariantCulture, "{0:G}", value);
Пример
Давайте выведем Box форматом
"G":
using System;
using System.Globalization;
class Box : IFormattable
{
public string ToString(string? format, IFormatProvider? provider)
{
if (format is null or "G")
{
return "abcde";
}
return "12345";
}
}
class Program
{
static void Main()
{
var box = new Box();
string res = box.ToString("G", CultureInfo.InvariantCulture);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте вызовем ToString с
null вместо формата:
using System;
using System.Globalization;
class Box : IFormattable
{
public string ToString(string? format, IFormatProvider? provider)
{
if (format is null or "G")
{
return "abcde";
}
return "12345";
}
}
class Program
{
static void Main()
{
var box = new Box();
string res = box.ToString(null, CultureInfo.InvariantCulture);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте подставим объект в
string.Format:
using System;
using System.Globalization;
class Box : IFormattable
{
public string ToString(string? format, IFormatProvider? provider)
{
if (format is null or "G")
{
return "abcde";
}
return "12345";
}
}
class Program
{
static void Main()
{
var box = new Box();
string res = string.Format(
CultureInfo.InvariantCulture, "{0:G}", box);
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
ISpanFormattable,
формат в буфер символов -
Составной формат,
подстановкаIFormattable -
DateTime.ToString,
встроенное форматирование даты -
TimeSpan.ToString,
встроенное форматирование интервала