是否更好使用[类型] .Parse或C [Type]

Mat*_*lko 3 .net vb.net performance types type-conversion

如果我尝试将一个字符串放入一个布尔变量,如下所示:

    Dim testValue As String = "True"
    Dim bool1 As Boolean = testValue
Run Code Online (Sandbox Code Playgroud)

随着Option Strict On我得到一个错误,并建议修复方法就是改变第二行:

    Dim bool1 As Boolean = CBool(testValue)
Run Code Online (Sandbox Code Playgroud)

这很好,但是 - 这样做的优点/缺点是什么:

    Dim bool1 As Boolean = Boolean.Parse(testValue)
Run Code Online (Sandbox Code Playgroud)

CBool 感觉非常VB6喜欢我,但我们应该使用哪些,为什么?

Jay*_*Jay 5

如果你知道它在两种情况下都是一个字符串,它应该是一个等价的过程.由于Cbool最终会调用一个函数来转换它.(只要您的值为"True"或"False")

如果使用类似cbool(value)的值并且值是布尔值,则会有所不同.

来自MSDN:

请注意,仅当要解析的字符串在不区分大小写的比较中为"True"(TrueString字段的值)或"False"(FalseString字段的值)时,解析操作才会成功.

MSDN关于Cbool(以及其他类似的方法):

这些函数是内联编译的,这意味着转换代码是评估表达式的代码的一部分.有时没有调用过程来完成转换,从而提高了性能.每个函数都将表达式强制转换为特定的数据类型

因此,如果您使用cbool(value),如果您的值是布尔值,它只使用它,不需要转换.这使它可能更有效率.

您也可以检查一下: Integer.Parse与CInt