Я полностью потерян с этим.
Итак, я пытаюсь использовать int.TryParse
для анализа строки, совершенно правильная строка, содержащая буквально число «3», вот и все. Но он возвращает мне ложь, когда я пытаюсь разобрать его.
Вот как я его использую - я отладил его, и int.TryParse
определенно возвращает ложь, как код в если оператор выполняется:
if (!int.TryParse(numberSplitParts[0], out int hour))
return false;
И я посмотрел в отладчике numberSplitParts[0]
определенно di git 3, это совершенно правильно!
Итак, я провел некоторое исследование, и люди говорили, что нужно использовать инвариант CultureInfo, поэтому я сделал это, вот новая обновленная строка (я также попытался NumberStyles.Any
и это тоже не сработало):
if (!int.TryParse(numberSplitParts[0], NumberStyles.Integer, CultureInfo.InvariantCulture, out int hour))
return false;
Это тоже не сработало - оно продолжает возвращать мне false
, а hour
равно 0
.
Я также пробовал все другие типы чисел - byte.Parse
, Int16.Parse
et c. Все они тоже вернули false
.
И я попробовал обычный int.Parse
, и это просто дает мне следующее исключение:
Система. FormatException : 'Входная строка была не в правильном формате.'
Но затем я попробовал это в другом проекте, поэтому я скопировал строковый массив и все, и он работал там - как с «InvariantCulture», так и без него.
Итак, я подозреваю, что проект, в котором я работаю, должен быть настроен таким образом, чтобы вызвать int.Parse
/ int.TryParse
не работать. Это находится в библиотеке классов, доступ к которой осуществляется из приложения UWP - может ли тот факт, что это выполняется под UWP, иметь какой-либо эффект?