在VB.NET中将布尔值转换为整数

前端之家收集整理的这篇文章主要介绍了在VB.NET中将布尔值转换为整数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
拿下面的代码
Sub Main()

    Dim i As Integer
    Dim b As Boolean

    i = 1
    b = i
    i = b
    Console.WriteLine(i)

    i = Convert.ToInt32(b)
    Console.WriteLine(i)

End Sub

这将打印以下内容

-1
1

为什么是这样?

(只是一个笑话:)你可以得到0太…

Int32.TryParse("True",i)
Console.WriteLine(i)
你看到的是一些遗留代码显示它的头。

事情的核心是VT_BOOL类型。 Visual Basic 6.0使用VT_BOOL类型(AKA VARIANT_BOOL)作为其布尔值。对于VARIANT_BOOL为True,其值为VARIANT_TRUE,其值为-1。在转换到.NET时,决定使用Visual Basic转换例程将布尔值转换为整数值时,Visual Basic 6.0语义将保留在返回值上;它将是-1。

第一个隐式转换发生在b = i行。在底层,这做一个从整数到布尔的隐式转换。任何非零值都被视为true,因此结果值为true。

但是,以下代码行是隐式转换为整数类型。

i = b

在引擎盖下,使用一个Visual Basic转换程序(CTypeCInt)将值转换为整数。因为Visual Basic语义正在播放,返回的值为-1。

下一个有趣的行是Convert.ToInt32()行。这是使用.NET转换程序,不使用Visual Basic语义。相反,它返回一个真正的布尔值为1的底层BCL表示。

原文链接:https://www.f2er.com/vb/256213.html

猜你在找的VB相关文章