免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

CStr與toString的差別

最近遇到了一个奇怪的现象,参见说明代码:

1        Dim a As String = "1000"
2        Dim b As String = "1"
3        Dim c As String = "6"
4        Dim d As String
5        Dim f As Long
6
7        d = CStr(CLng(a) * CLng(b) / CLng(c))
8        f = (CLng(a) * CLng(b) / CLng(c)).ToString
9
10        MessageBox.Show(d)
11        MessageBox.Show(f)

以上代码中d 和f 的值并不相同。
使用CSTR()的时候,返回值并没有四舍五入,而使用.TOSTRING()的时候进行了四舍五入。
可见,这种情况下.TOSTRING()才是我们期待的结果,如果使用CSTR()的话将返回错误的值。
所以建议尽量使用VB.NET的函数,放弃VB老版本的函数。

CStr是运算符,不是函数。CLng等也是一样
CStr就等于CType(, String)。VB定义了一些扩展转换,.NET无法转换的东西有时VB也可以转换(比如从string到数值)。



这里全都是你的错,不关VB的事。你可知“/”是实数除法,会得到浮点数。整数除法是“\",只有\才能得到整数。为什么ToString的结果是对的,你自己看看f定义成什么类型了?

程序行为不对要先从自己的代码里找错误,不要抱怨编译器。

-------------------------------------------------------------

我原以为它们的作用都是把其他类型的数据转换成string类型.结果今天在转换一个数据库传回的null类型时,cstr()出错,而.tostring转换为空字符.
有人知道他们还有那些细节差别吗??编程语言:VB.NET

CStr是转换类型为string,因此只有非常有限的几种类型才能转换,比如数值,布尔,日期等。而tostring方法是类(或者说变量)的字符串表示形式,当为值类型时,一般等效于cstr函数,为引用类型时返回所属的完整命名空间和类名,为null时返回空字符串。
返回列表