В чем разница между следующими тремя ToString - PullRequest
1 голос
/ 28 ноября 2010
string ToString();
string ToString(IFormatProvider provider);
string ToString(string format, IFormatProvider provider);

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

С редактированием:

public override string ToString()

обеспечивает простейшее форматирование;это не позволяет спецификаторы формата, и культура неявна.Но это удобно для отображения основных элементов управления пользовательского интерфейса или во время отладки.

Версия аргумента 2 позволяет указывать формат и культуру, а интерфейс IFormattable обычно проверяетсянапример, string.Format и элементы управления пользовательским интерфейсом, которые позволяют разработчику указать используемый формат (в частности, при привязке данных).

Версия с 1 параметром не имеет особого значения;обратитесь к документации, но в приведенном вами примере это просто позволяет указать культуру.В большинстве случаев я бы ожидал, что

public string ToString(string format)

будет более вероятным, используя текущую культуру по умолчанию (или оба будут предоставлены).

0 голосов
/ 28 ноября 2010

(примечание: вопрос изменился ...)

Вы можете всегда переопределять ToString (если только базовый класс его не запечатывает), поэтому вы обычно можете сделать что-то - но если вам нужна поддержка спецификатора формата (то есть текстовая шаблон, такой как "###, 000") IFormattable - это маршрут, но вы должны предоставить реализацию самостоятельно. Обратите внимание, что в некоторых случаях TypeConverter также может помочь.

...