在VB.net中从用户获取布尔输入

在VB.net中从用户获取布尔输入,vb.net,Vb.net,我有一个布尔数据类型的变量,使用windows控制台,我希望在其中存储use输入。我知道如何使用if语句和数据验证来实现这一点,但我想看看vb是否有一种方法可以自然地处理这一点 为了显示一些代码: Dim tOrF As Boolean tOrF = Console.ReadLine 谢谢您可以调用Boolean.Parse(Console.ReadLine()) 如果用户未键入True或False则会引发异常。您可以使用方法检查输入的值是否为有效的布尔值,否则会引发异常 尝试转换逻辑对象的指

我有一个布尔数据类型的变量,使用windows控制台,我希望在其中存储use输入。我知道如何使用if语句和数据验证来实现这一点,但我想看看vb是否有一种方法可以自然地处理这一点

为了显示一些代码:

Dim tOrF As Boolean
tOrF = Console.ReadLine

谢谢

您可以调用
Boolean.Parse(Console.ReadLine())

如果用户未键入
True
False

则会引发异常。您可以使用方法检查输入的值是否为有效的布尔值,否则会引发异常

尝试转换逻辑对象的指定字符串表示形式 值设置为其布尔等价项。返回值指示 转换成功或失败

Dim标志为布尔值
Dim值为String=Console.ReadLine()
如果是Boolean.TryParse(值、标志),则
Console.WriteLine(“{0}-->{1}”,值,标志)
其他的
WriteLine(“无法分析{0}”。”,
如果(值为空,“,值))
如果结束

回到VB6中,当我们想要满足人类调整注册表项的需要时,我创建了
CRegBool
(注意,这是从
选项比较文本
模块获得的):

'----------------------------------------------------------------------
'功能:CRegBool
'
“目的:
'将可能由人工“调整”的设置值转换为布尔值。
'
"论据:
'要转换为布尔值的变量值。
'布尔值(Opt)默认值。
'
“返回:
'如果值表示“肯定”或非零值,则布尔值为True。
'如果值表示“负值”或零值,则为False。
'否则返回默认值。
'
“错误:
'仅限CStr(或LCase$)抛出的。
'
'注:
'默认值可能永远不会为False,除非扩展Else大小写
'捕捉Val(rv)0->True;然而,这是错误的,相当多。。。
'
'在操作中使用LCase$if选项比较二进制文件。
'
“修订历史:
'070615 MEH从MsgU迁出:modMsgUI。
'070907 MEH补充了评论。
'070928 MEH更新注释以突出LCase$,如果不是选项比较文本,则需要。
'----------------------------------------------------------------------
公共函数CRegBool(ByVal RegValue作为变量,可选ByVal DefaultValue作为Boolean=True)作为Boolean
选择案例CStr(RegValue)'LCase$(CStr(RegValue))'
案例“0”、“00”、“0x0”、“和h0”、“假”、“否”、“关闭”、“n”
CRegBool=False
案例“1”、“01”、“0x1”、“和h1”、“真”、“是”、“开”、“1”、“y”
CRegBool=True
其他情况
CRegBool=DefaultValue
结束选择
端函数
使用我最新的已知问题(特别是大写字母比较好)快速转换VB.NET:

“”----------------------------------------------------------------------
''函数:CRegBool
'''
''' 
''将可能由人工“调整”的设置值转换为布尔值。
''' 
'''
''值转换为布尔值。
''默认值。
'''
''' 
''如果值表示“肯定”或非零值,则为True。
如果值表示“负值”或零值,则为“False”。
''否则返回默认值。
''' 
'''
''' 
''默认值可能永远不会为False,除非扩展Else情况
''捕捉Val(rv)0->True;然而,这是错误的,相当多。。。
'''
''如果选项比较操作中的二进制文件,请使用UCase。
''' 
'''
''' 
''070615百万小时从MsgU搬迁:modMsgUI。
“070907 MEH增加了评论。
''070928 MEH更新了注释以突出UCase,如果没有选项比较文本。
''120924 MEH在SO文本框中转换为VB.NET,无需测试。。。
''' 
'''----------------------------------------------------------------------
公共函数CRegBool(ByVal RegValue作为对象,可选ByVal DefaultValue作为Boolean=True)作为Boolean
选择案例CStr(RegValue)'UCase(CStr(RegValue))'
案例“0”、“00”、“0X0”、“和H0”、“假”、“否”、“关闭”、“N”
CRegBool=False
案例“1”、“01”、“0X1”、“和H1”、“真”、“是”、“开”、“1”、“Y”
CRegBool=True
其他情况
CRegBool=DefaultValue
结束选择
端函数
     Dim flag As Boolean 
     Dim value as String = Console.ReadLine()
     If Boolean.TryParse(value, flag) Then
        Console.WriteLine("'{0}' --> {1}", value, flag)
     Else
        Console.WriteLine("Unable to parse '{0}'.", 
                          If(value Is Nothing, "<null>", value))
     End If          
'----------------------------------------------------------------------
' Function: CRegBool
'
' Purpose:
'   Converts settings value that could have been 'adjusted' by a human to a Boolean.
'
' Arguments:
'   Variant     Value to convert to Boolean.
'   Boolean(Opt)Default value.
'
' Returns:
'   Boolean     True if the value represents an 'affirmative' or non-zero value.
'               False if the value represents a 'negative' or zero value.
'               Otherwise returns default value.
'
' Errors:
'   Only those thrown by CStr (or LCase$).
'
' Notes:
'   Default value should probably never be False unless the Else Case is expanded
' to catch Val(rv) <> 0 -> True; Nevertheless, it is False rather a lot...
'
'   Use LCase$ if Option Compare Binary in operation.
'
' Revision History:
'   070615 MEH Moved from MsgU:modMsgUI.
'   070907 MEH Added commentary.
'   070928 MEH Updated commentary to highlight LCase$ is needed if not Option Compare Text.
'----------------------------------------------------------------------
Public Function CRegBool(ByVal RegValue As Variant, Optional ByVal DefaultValue As Boolean = True) As Boolean

  Select Case CStr(RegValue) 'LCase$(CStr(RegValue)) '
  Case "0", "00", "0x0", "&h0", "false", "no", "off", "n"
    CRegBool = False
  Case "1", "01", "0x1", "&h1", "true", "yes", "on", "-1", "y"
    CRegBool = True
  Case Else
    CRegBool = DefaultValue
  End Select

End Function
'''----------------------------------------------------------------------
''' Function: CRegBool
'''
''' <summary>
'''   Converts settings value that could have been 'adjusted' by a human to a Boolean.
''' </summary>
'''
''' <parameter name="">Value to convert to Boolean.</parameter>
''' <parameter name="">Default value.</parameter>
'''
''' <returns>
'''   True if the value represents an 'affirmative' or non-zero value.
'''   False if the value represents a 'negative' or zero value.
'''   Otherwise returns default value.
''' </returns>
'''
''' <remarks>
'''   Default value should probably never be False unless the Else Case is expanded
'''  to catch Val(rv) <> 0 -> True; Nevertheless, it is False rather a lot...
'''
'''   Use UCase if Option Compare Binary in operation.
''' </remarks>
'''
''' <revisionhistory>
'''   070615 MEH Moved from MsgU:modMsgUI.
'''   070907 MEH Added commentary.
'''   070928 MEH Updated commentary to highlight UCase is needed if not Option Compare Text.
'''   120924 MEH Converted to VB.NET in the SO text box without testing...
''' </revisionhistory>
'''----------------------------------------------------------------------
Public Function CRegBool(ByVal RegValue As Object, Optional ByVal DefaultValue As Boolean = True) As Boolean

  Select Case CStr(RegValue) 'UCase(CStr(RegValue)) '
  Case "0", "00", "0X0", "&H0", "FALSE", "NO", "OFF", "N"
    CRegBool = False
  Case "1", "01", "0X1", "&H1", "TRUE", "YES", "ON", "-1", "Y"
    CRegBool = True
  Case Else
    CRegBool = DefaultValue
  End Select

End Function