Есть такой метод:
ссылка.
И вот его реализация:
https://referencesource.microsoft.com/#mscorlib/system/char.cs,150
[Pure]
public String ToString(IFormatProvider provider) {
Contract.Ensures(Contract.Result<String>() != null);
return Char.ToString(m_value);
}
Получается, что аргумент полностью игнорируется.
Вопрос зачем нужен этот метод если толку от передачи IFormatProvider ноль ?
Я подозреваю, что это сделано для симметрии с остальными типами. Может кто знает ?
Здравствуйте, _NN_, Вы писали:
_NN>Я подозреваю, что это сделано для симметрии с остальными типами. Может кто знает ?
Это часть реализации интерфейса
IConvertible.
Использовать этот аргумент реализация интерфейса не обязана.
Здравствуйте, _NN_, Вы писали:
_NN>Есть такой метод: ссылка.
_NN>И вот его реализация:
_NN>https://referencesource.microsoft.com/#mscorlib/system/char.cs,150
_NN>_NN> [Pure]
_NN> public String ToString(IFormatProvider provider) {
_NN> Contract.Ensures(Contract.Result<String>() != null);
_NN> return Char.ToString(m_value);
_NN> }
_NN>
_NN>Получается, что аргумент полностью игнорируется.
_NN>Вопрос зачем нужен этот метод если толку от передачи IFormatProvider ноль ?
_NN>Я подозреваю, что это сделано для симметрии с остальными типами. Может кто знает ?
provider это формат получаемой строки
Например можно написать так:
DateTime d = new DateTime(1999, 1, 1);
Console.WriteLine(d.ToString()+" "+d.ToString("dd-MM-yyyy"));
1вар. в этом примере выведет дату в стандарт. варианте,
2вар. в формате 01-01-1999
Эта очень удобная фича например когда дату нужно вывести пользователю в его привычном формате.
Здравствуйте, _NN_, Вы писали:
_NN>Вопрос зачем нужен этот метод если толку от передачи IFormatProvider ноль ?
_NN>Я подозреваю, что это сделано для симметрии с остальными типами.
RTFM:
Implements
ToString(IFormatProvider)
Как уже сказали, просто реализуется интерфейс.
А почему параметр не используется? Имея любой char можно легко превратить его в строку. Провайдер при этом значения не имеет.