Я столкнулся с очень странной вещью при создании файла настроек JSON в проекте. globalSettings - это контейнер, в котором хранится множество настроек.
В свойстве PreHeight я сохраняю новое значение для globalSetting (эти настройки будут сохранены в файле json при выходе из приложения). Я даже явно приводил «значение» для ясности (на самом деле не требуется).
globalSettings["PreHeight"] = (float)value;
Когда я пытаюсь загрузить настройки обратно при запуске, я сначала пробовал следующий код.
PreHeight = (float)globalSettings["PreHeight"];
К моему удивлению, это исключение не может быть использовано. Затем я просто изменил строку, чтобы использовать нейтральный для языка подход Convert.ToSingle (). На заднем плане он должен делать точно такой же тип приведения. К моему удивлению строка кода не выдается при использовании подхода Convert.ToSingle ().
PreHeight = Convert.ToSingle(globalSettings["PreHeight"]);
Может кто-нибудь объяснить это странное поведение?
Мне хорошо известно, что JSON сохраняет в простейшем типе данных, поэтому 0 рассматривается как целое число, но с какой стати возникнет проблема приведения его обратно в число с плавающей точкой?