CStr()Str().ToString()

时间:2012-01-19 10:53:18

标签: vb.net string

我只是想知道,函数 CStr() Str()之间究竟有什么区别,还有 .ToString()?使用下面提供的代码,三者之间有什么区别?

Label1.Text = CStr(Int(Rnd() * 10))

Label1.Text = Str(Int(Rnd() * 10))

Label1.Text = Int(Rnd() * 10).ToString

当我使用这个条件时

If Label1.Text = "7" Then
     'Some code here
End If

... Str()功能在这里不起作用。它有什么不同? 提前谢谢:))

5 个答案:

答案 0 :(得分:33)

ToString 将调用特定实例上的.ToString()函数。 在实践中,这意味着如果对象在,它将抛出异常 问题是Nothing。但是,您可以自己实施.ToString() 用于获取对象的有用字符串表示的类,而 CType / CStr仅适用于内置类和接口。

CStr CType(表达式,字符串)完全相同(我不是 确定另一张海报认为CStr更快的想法。但是他们 它们不是真正的函数,它们是非常发射的编译器指令 不同的代码取决于表达式的声明。多数情况 例如,这些指令调用了一堆试图的内部VB代码 从表达式中获取合理的字符串

DirectCast(表达式,字符串)假定表达式为 问题确实是String而且只是投了它。这是最快的 这些选项,但如果表达式是任何东西,将抛出异常 除了String

答案 1 :(得分:2)

作为VBA / VB6环境的补充,我们没有ToString()

  • Str() 不知道的国际代表。小数点分隔符始终为点(.)。

    如上所述,如果是正值,它会在结果字符串前加一个空格。

  • 还存在Str$()。与Str()的区别在于返回类型:

    Str()返回string类型的变体,Str$()返回一个字符串。

    Str$()略快于Str()

  • CStr()相比之下意识到的国际代表性。小数分隔符取决于Windows国际设置。

    不会为正值添加额外的前缀。

因此,如果您需要将值类型转换为字符串并且必须确保点作为小数分隔符且没有前缀空白,则使用以下语法:

Dim d As Double
d = 123.456

Dim s As String
s = Trim(Str$(d))

答案 2 :(得分:1)

我不知道ToString(),我不知道VB.NET

但在VB6(Visual Basic 6)中:

Cstr()和Str()都将值转换为字符串。但是Cstr()更好,因为:

Str():转换为字符串后,它会在正数之前添加1个空格。例如:Str(22)> “22”

Cstr():转换为字符串后,它永远不会添加上面的额外空格 - 为了获得最佳效果,请使用Trim() - Trim(Cstr(Variable))

答案 3 :(得分:0)

虽然问题中的代码不是问题,但重要的是要提到Str()仅将数字表达式转换为字符串,在其他情况下会出错,因此不要使用它来转换值细胞。

答案 4 :(得分:0)

我的回答是str()是邪恶的,因为它总是在符号字符前加一个空格,因此,如果您比较值,它将失败。而是使用CStr()而不这样做。

您可能会遇到尝试执行此操作的业务逻辑:

例如:

Dim sVar as String = "1"
Dim i as Integer = 1
console.write( cstr(i) = sVar )

哪个输出:

False

我在此代码上浪费了几个小时,因为该代码在旧代码中非常深入,并且在基于日志记录的调试可用的生产环境中很难理解。