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

.net – 字符串值如何用作布尔值

发布时间:2020-12-17 07:23:16 所属栏目:百科 来源:网络整理
导读:当我意识到我可以将一个布尔值影响到一个字符串时,我正在玩VB.NET(Visual Studio IDE)中的代码 该字符串因此取值“True”或“False” 然后我尝试使用它作为布尔值,如 如果StringValueContainingTrueOrFalse则 ????‘做一点事 万一 这也起作用并且给出了期望
当我意识到我可以将一个布尔值影响到一个字符串时,我正在玩VB.NET(Visual Studio IDE)中的代码

该字符串因此取值“True”或“False”

然后我尝试使用它作为布尔值,如

如果StringValueContainingTrueOrFalse则
????‘做一点事
万一

这也起作用并且给出了期望的结果.这让我意识到我对后台的工作方式知之甚少.

在检测到的字符串中是否为True,IDE是否足够智能处理它,或者只是尝试将值转换为需要的值(因此知道它需要一个布尔值尝试将字符串转换为一个做它的行动)?

发生了什么使这成为可能?

解决方法

当在IF语句中使用非布尔表达式时,Vb.Net编译器将使用 Conversions.ToBoolean方法将表达式转换为布尔值.

你的代码等于

If Conversions.ToBoolean(StringValueContainingTrueOrFalse) then
    'Do Something
End if

如果您的值可以转换为布尔值,那么一切都很好.否则将抛出异常.

例如:

Sub Main
    Dim StringValueContainingTrueOrFalse as String = "True"

    IF StringValueContainingTrueOrFalse then
    Console.WriteLine("true")
    end if  
End Sub

以上程序生成以下IL:

IL_0000:  ldstr       "True"
IL_0005:  stloc.0     // StringValueContainingTrueOrFalse
IL_0006:  ldloc.0     // StringValueContainingTrueOrFalse
IL_0007:  call        Microsoft.VisualBasic.CompilerServices.Conversions.ToBoolean
IL_000C:  brfalse.s   IL_0018
IL_000E:  ldstr       "true"
IL_0013:  call        System.Console.WriteLine
IL_0018:  ret

您可以看到标签IL_0007显示对Conversions.ToBoolean方法的调用.

(编辑:李大同)

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

    推荐文章
      热点阅读