среда, 4 февраля 2015 г.

Загадка )


Дано:
string MyNum = "1";

Вопрос:
Convert.ToInt32(MyNum[0]) == ?

Ответ и пояснение под катом. )
Ответ:  49

Пояснение:
В шарпах строка все еще неявно является массивом типа char. Фактически, я пытаюсь вызвать Convert.ToInt32(char c), и конвертер пытается преобразовать некий произвольный символ в число. С учетом. что для него символ может быть произвольным, он считает вполне логичным вернуть нам ASCII код. Что и описывает нам документация: https://msdn.microsoft.com/en-us/library/ww9t2871(v=vs.110).aspx

Что делать:
Convert.ToInt32(MyNum.Substring(0,1))

или (народ на stackoverflow предлагает) так

Convert.ToInt32(Convert.ToString(MyNum[0]));

Комментариев нет:

Отправить комментарий