在转换类型时,我发现自己同时使用 VB 函数和 BCL Convert.To* 方法。
例如。)

  • Cstr()Convert.ToString()
  • CInt()Convert.ToInt32()
  • CDbl()Convert.ToInt64()
  • ETC...

有没有 微妙的 有哪些差异需要注意?

有帮助吗?

解决方案

这个已经被覆盖了 原则上,但确实存在差异:基本上,VB 帮助程序会为您做额外的工作,以便通过泛型抛出异常的位置进行解析,并且一般情况下(但并非普遍)VB 帮助程序更快(尽管我不知道是否如此),因为它们是真的只是白糖。调味。


编辑: 这家伙 比我能更好地涵盖它。

编辑还原:乔尔·科霍恩还推荐 上述文章的前身, ,并且显然在某个地方有一些基准测试。

乔尔写道:

总结是 CInt() 是一个 运算符,而 Convert.ToInt32() 是 功能。CInt 住在某个地方 (int)x 之间;和 Convert.ToInt32(x);。

其他提示

我刚刚发现了另一个很大的差异,我认为这里值得一提——尽管是在 OP 之后几年! CInt({Boolean expression}) 当以下情况时,计算结果为 -1 True, , 然而 Convert.ToInt<n> 评估为 1。

这可能会发现在数学评估中使用过前者的任何人,EG:

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 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top