CStr()Str().ToString()

aer*_*aer 27 vb.net string

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

Label1.Text = CStr(Int(Rnd() * 10))
Run Code Online (Sandbox Code Playgroud)

Label1.Text = Str(Int(Rnd() * 10))
Run Code Online (Sandbox Code Playgroud)

Label1.Text = Int(Rnd() * 10).ToString
Run Code Online (Sandbox Code Playgroud)

当我使用这个条件

If Label1.Text = "7" Then
     'Some code here
End If
Run Code Online (Sandbox Code Playgroud)

...... Str()函数在这里不起作用.它有什么不同?提前致谢 :))

Joh*_*Woo 34

ToString.ToString()在特定实例上调用该函数.实际上,这意味着如果有问题的对象会抛出异常Nothing.但是,您可以.ToString()在自己的类中实现以获取对象的有用字符串表示,而 CType/ CStr只能使用内置类和接口.

CStrCType(表达式,字符串)完全相同(我不确定其他海报在哪里得到CStr更快的想法).但它们不是真正的函数,它们是编译器指令,它们将根据表达式声明发出非常不同的代码.在大多数情况下,这些指令调用一堆内部VB代码,试图从表达式中获取合理的字符串.

DirectCast(expression,String)假定所讨论的表达式确实是a String并且只是强制转换它.它是所有这些选项中最快的,但如果表达式不是a ,则会抛出异常String.

  • +1:你可以补充一点,"Str"是对最早版本的Basic的回击.`Str`将数字转换为字符串.如果数字是正数,它会放入一个领先的空间.如果数字是负数,则没有前导空格但是有一个减号,因此`Str(10)`&`Str(-10)`将产生3个字符长度的字符串.我建议在原语上使用`ToString()`方法,它们更强大,有更多选项. (7认同)
  • 人们如何做到这一点?你如何快速,全面地回答问题?:-P (6认同)
  • +1但**国际化**也存在重要差异.`CStr`和`ToString`考虑了文化设置,因此例如在将数字转换为字符串时可能使用逗号作为小数分隔符,在转换日期时将使用本地化的月份名称,依此类推.`Str`是不变的,总是使用US设置:dot表示小数分隔符,依此类推."ToString"有重载,允许您指定要使用的格式或语言环境. (5认同)