在转换类型时,我发现自己使用VB函数和BCL Convert.To *方法 例如,
Cstr()
与Convert.ToString()
CInt()
与Convert.ToInt32()
CDbl()
与Convert.ToInt64()
是否应该注意微妙差异?
答案 0 :(得分:10)
原则上已经涵盖了before,但是确实存在差异:基本上VB助手会为你做额外的工作来解析泛型会抛出异常的位置,一般但不是普遍的VB辅助工具更快(虽然我不知道它是否显着)因为它们只是IL糖。品尝季节。
编辑:This guy比我更好地覆盖它。
编辑Redux:Joel Coehoorn也推荐了precursor to the above article,显然在某个地方有一些基准测试。
Joel写道:
摘要是CInt()是一个 运算符,而Convert.ToInt32()是一个 功能。 CInt生活在某个地方 之间(int)x;和 Convert.ToInt32(X);
答案 1 :(得分:2)
我刚刚发现了另一个很大的不同之处,我认为值得一提 - 尽管OP已经过了几年! CInt({Boolean expression})
时True
评估为-1,而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