加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 23:52:49 所属栏目:大数据 来源:网络整理
导读:拿下面的代码: 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 这将打印以下内容: -11 为什么是这样? (只是一个笑话:)你可以得到0太… Int32.TryParse("True
拿下面的代码:
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转换程序(CType或CInt)将值转换为整数。因为Visual Basic语义正在播放,返回的值为-1。

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读