Integer.Parse与CInt

时间:2009-01-08 10:38:23

标签: vb.net

基本上,我在大多数日常编程任务中一直使用Integer.ParseCInt,但我对两者之间的区别有点困惑。

VB.NET中Integer.ParseCInt之间有什么区别?

4 个答案:

答案 0 :(得分:30)

CIntInteger.Parse做得更多。

CInt将首先检查它传递的是一个整数,然后简单地转换它并返回它。如果它是一个双倍,它将尝试转换它而不先将双精度转换为字符串。

请参阅CInt和其他Type Conversion Functions

的帮助
  

分数部分。当你转换一个   非整数值为整数类型,   整数转换函数   (CByte,CInt,CLng,CSByte,CShort,   CUInt,CULng和CUShort)删除   小数部分并将值舍入到   最接近的整数。

     

如果小数部分恰好是0.5,   整数转换函数是圆的   它到最近的偶数整数。对于   例如,0.5轮到0,以及1.5和   2.5都是2到2.这有时被称为银行家的四舍五入及其   目的是弥补偏见   添加很多时可能会累积   这些数字在一起。

简而言之,它不仅仅是将字符串转换为整数,例如将特定的舍入规则应用于分数,短暂的不必要的转换等。

如果您正在做的是将字符串转换为整数,请使用Integer.Parse(或Integer.TryParse),如果您正在胁迫未知值(例如variant或{从数据库{1}}到整数,使用object

答案 1 :(得分:4)

在某些示例代码中查看ILDASM,您可以看到CInt已转换为此调用:

<强> Microsoft.VisualBasic程序] Microsoft.VisualBasic.CompilerServices.Conversions :: ToInteger(字符串)

使用.NET Reflector,您可以提取这段代码:

Public Shared Function ToInteger(ByVal Value As String) As Integer
    Dim num As Integer
    If (Value Is Nothing) Then
        Return 0
    End If
    Try
        Dim num2 As Long
        If Utils.IsHexOrOctValue(Value, (num2)) Then
            Return CInt(num2)
        End If
        num = CInt(Math.Round(Conversions.ParseDouble(Value)))
    Catch exception As FormatException
        Throw New InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", New String() { Strings.Left(Value, &H20), "Integer" }), exception)
    End Try
    Return num
End Function

您可以在内部看到它调用 Conversions.ParseDouble

因此,正如Binary Worrier已经解释过的那样,使用Integer.Parse进行字符串强制,只使用CInt进行强制转换。

答案 2 :(得分:-1)

<Data Type>.Parse方法用于从表示值的字符串中提取类型的值(例如,来自“2”的2)C<Data Type>函数对表达式进行操作并返回变量子键入所需类型(例如CInt("2")CInt(SomeDouble + SomeDouble)等)。

答案 3 :(得分:-1)

这是一个真正的区别: Integer.parse(“ 1.00”)将引发错误。 CInt(“ 1.00”)将起作用