int.Parse on negative number导致异常

时间:2013-08-21 11:31:49

标签: c# xamarin.android xamarin

这行代码:

int.Parse("-1");

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

  • Google Nexus 7(4.3)
  • Samsung S3(4.1.2)
  • 三星Galaxy Tab(4.0.4)
  • LG P970(2.2.2)
  • HTC Sensation(2.3.4)

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

C#Shell screenshot

有谁知道为什么会这样,或者可以采取哪些措施来解决这个问题?

更新

我正在调查此问题的原因是因为我们的应用程序正在从我们的服务器请求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的其他平台。

1 个答案:

答案 0 :(得分:1)

我最终修改了ServiceStack:

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

<强>更新

现在Xamarin也解决了这个问题:

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