代码之家  ›  专栏  ›  技术社区  ›  dance2die

*VB函数和convert.to*函数之间细微的*差异?

  •  10
  • dance2die  · 技术社区  · 16 年前

    在转换类型时,我发现自己同时使用了vb函数和bcl convert.to*方法。
    例如)

    • Cstr() VS Convert.ToString()
    • CInt() VS Convert.ToInt32()
    • CDbl() VS Convert.ToInt64()
    • 等。。。

    有没有 微妙的 应注意的差异?

    2 回复  |  直到 11 年前
        1
  •  10
  •   Community Mohan Dere    8 年前

    这已经包括在内了 before 原则上来说,但是有区别:基本上,vb助手会为你做额外的工作,让你通过泛型抛出异常的解析,一般来说,但不是普遍的,vb助手会更快(尽管我不知道它是否显著),因为它们只是il-sugar。品尝时令。


    编辑: This guy 比我能做的更好。

    编辑redux:joel coehoorn还建议 precursor to the above article 很明显他在某个地方有一些标杆。

    乔尔写道:

    摘要是cint()是一个 运算符,而convert.toint32()是 功能。Cint住在 介于(int)x之间;和 转换.toint32(x);。

        2
  •  2
  •   Ants1060    11 年前

    我刚刚发现了另一个巨大的差异,我认为值得一提的是这里的“尽管手术后几年!” CInt({Boolean expression}) 当计算结果为-1时 True Convert.ToInt<n> 评估为1。

    这可能会让任何在数学评估中使用前者的人出局,例如:

    For i As Integer = 0 To 1 - CInt(processThirdItem) 'Evaluates to -1 (1 - -1 = 2)
        'Do stuff...
    Next
    

    所以,使用 Convert.ToInt32 代替 CInt 除非你把接线员从 - + .

    当然.net短路了 If 现在函数提供了一种更好的方法:

    For i As Integer = 0 to If(processThirdItem, 2, 1)
        'Do stuff...
    Next