2

这行代码:

int.Parse("-1");

当我在设备上运行它时,导致 FormatException 显示“输入字符串的格式不正确”。在模拟器上它工作得很好。我已经用一堆设备对此进行了测试,唯一能按预期工作(即返回值为-1的int)是运行android 4.2.1的三星Galaxy Nexus。所有这些设备都会产生异常:

  • 谷歌 Nexus 7 (4.3)
  • 三星 S3 (4.1.2)
  • 三星 Galaxy Tab (4.0.4)
  • LG P970 (2.2.2)
  • HTC 感觉 (2.3.4)

我还尝试在设备上从 playstore 下载应用程序C#Shell,然后输入上面的行,结果是一样的:

C#Shell 截图

有谁知道为什么会发生这种情况,或者可以做些什么来解决这个问题?

更新:

我正在调查此问题的原因是因为我们的应用程序正在从我们的服务器请求 JSON,并且它包含一堆负数。然后我们使用ServiceStack解析 JSON,结果所有负数都变为 0。ServiceStack 无法设置 FormatSpecifier。

int.Parse("-1", CultureInfo.InvariantCulture)无论他们使用什么语言,似乎都可以在所有设备上按预期工作,但int.Parse("-1", new CultureInfo("sv-SE"))事实并非如此。

我觉得这有点奇怪,因为int.Parse("-1", new CultureInfo("sv-SE"))在我们不使用 xamarin 或 mono 的其他平台上工作。

4

1 回答 1

1

我最终对 ServiceStack 进行了修复:

https://github.com/ServiceStack/ServiceStack.Text/pull/365

更新:

现在 Xamarin 也修复了它:

https://bugzilla.xamarin.com/show_bug.cgi?id=14185

于 2013-08-22T08:13:40.260 回答