【问题标题】:Flexible replacement for CInt?灵活替换CInt?
【发布时间】:2014-10-10 18:37:34
【问题描述】:

我有一些旧代码大量使用 CInt、CStr 和类似的。我正在对此进行更新,以便我们可以在其上使用 PCL 用于 Xamarin/Mono 目标。 Xamarin 不提供这些方法(因为它们是 VisualBasic 命名空间的一部分),但通常会提供底层方法。

但我对 PCL 允许的调用实际上匹配这些函数感到困惑。 CInt 将接受一个字符串、另一个 int、一个 double,几乎任何东西,并返回一个 Integer。但是……

  • Integer.Parse/TryParse 只接受字符串,不能传入双精度等
  • System.Convert.ToInt16/32/64 看起来更灵活,但哪个和Integer一样?

是否有直接替代 CInt、CDbl 等的方法?

【问题讨论】:

  • 嗯,不,这些 VB.NET 方法在以 VB 为目标的 PCL 项目中很容易获得。很难猜出你在做什么。
  • 我只是在 Windows 和 Xamarin 目标上运行 PCL 分析汇编可移植性工具。它报告 CInt 在 Xamarin 下不可用,所以...
  • 但是哪个和 Integer 一样? => Int32 msdn.microsoft.com/en-us/library/06bkb8w2.aspx
  • 嗯,这只是冰山一角。 Apple 手机上将缺少所有 VB.NET 运行时支持。 Xamarin 不支持 VB.NET,遇到问题时不能打电话给任何人。你最好切换到C#。如果必须的话,与 Convert 类一起跛行。
  • 我知道所有这些汉斯,这就是为什么我在这里提出一个非常集中的问题。 Xamarin 中的 Convert 或 Integer 中是否有与 CInt 的 API 匹配的内容?

标签: .net vb.net xamarin type-conversion portable-class-library


【解决方案1】:

替换为:

  • ConvertToInt32 与 Integer 相同,它的作用与 CInt() 相同。 ConvertToInt64 用于 Long,ToInt16 用于小值。
  • 铸造 > int 结果 = (int)value; 它将一个值转换为一个 int。它与转换它不同,但它可以在 double、float、long 上工作......如果可能的话。
  • Int.Parse,Int.TryParse。正如您之前指出的那样,它只会解析一个字符串以将其转换为 Integer。

猜想,根据您的需要,最好的选择是 ConvertToInt32。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2011-10-08
    • 2010-09-30
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多