*微妙* VB 函数和 Convert.To* 函数之间的区别?
-
05-09-2019 - |
题
在转换类型时,我发现自己同时使用 VB 函数和 BCL Convert.To* 方法。
例如。)
Cstr()
与Convert.ToString()
CInt()
与Convert.ToInt32()
CDbl()
与Convert.ToInt64()
- ETC...
有没有 微妙的 有哪些差异需要注意?
其他提示
我刚刚发现了另一个很大的差异,我认为这里值得一提——尽管是在 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
不隶属于 StackOverflow