今天才明白,VB原来是弱类型语言,虽然它是静态语言,但却是弱类型的
--------------------------------------
当加上:
option explicit
后,VB中的变量必须先定义,后使用,所以我一直以为它是强类型语言,今天才豁然开朗,它竟然是弱类型语言。
结论,它是静态语言,但却是弱类型。以下代码可知。b是字符串型,但是可以隐式转为整型,这是弱类型的标志。
而强类型的特点是,类型一直不能变。
Private Sub Command1_Click()
Dim a As Integer
Dim b As String
Dim c As Integer
a = 90
b = "10"
c = a + b
Debug.Print c
End Sub
--------------------------------------
当加上:
option explicit
后,VB中的变量必须先定义,后使用,所以我一直以为它是强类型语言,今天才豁然开朗,它竟然是弱类型语言。
结论,它是静态语言,但却是弱类型。以下代码可知。b是字符串型,但是可以隐式转为整型,这是弱类型的标志。
而强类型的特点是,类型一直不能变。
Private Sub Command1_Click()
Dim a As Integer
Dim b As String
Dim c As Integer
a = 90
b = "10"
c = a + b
Debug.Print c
End Sub
解决方案 »
- 谁有碰上这样的问题?vb6.0编译到一半,就卡住不动了。过了一会儿,就出现死机,最后电脑干脆就自动重启了。
- 如何在vb程序中使用crystal report9
- 如何实时刷新数据并显示
- 用VB结合SQL2000开发局域网数据库安装系统需要考虑哪些方面的问题呢?(急!)
- win 2k自动关机的例子
- 删除多个表的内容(在线等,解决马上送分)
- 紧急的问题!火烧眉毛了!!!!!!!!!!!!救!!!
- 如何打包才能使自己应用程序安装时执行自己的部分代码?
- 怎样让打开的程序获得焦点,例如打开多个程序,但我想让一个程序永远处于活动窗口状态,即使其后又打开有程序。应该怎样编哦?
- Visual studio.NET能运行在Windows 95上吗?
- textbox 显示当前日期+vscrollbar 天数加减一
- 怎么用VB制作一个搜索程序?请各位高手大侠们帮帮偶
基本类型被定义后,内存已经分配好,是不允许转换为别的类型的c = a + b相当于dim d as integer
d = CInt(b)
c = a + d
'然后释放d的内存和保存临时变量信息的内存
Dim a As Integer
Dim b As String
Dim c As Integer
a = 90
b = "10"
c = a & b
Debug.Print c
End SubLZ:再运行上述代码,能悟出啥道理?
a & b
此时两上变量自动转成字符串,然后连接。结果是:"9010"
然后要赋给变量c,可是c是整型,所以再次自动转换为整型
若不符合则自动转换为符合运算符要求的对应的临时变量中去,再进行运算。
VBScript 才是弱类型。
---------------------------------
但以下这个说法是错语的,至少你现在对VB的字串连接符&还不明白
a & b
此时两上变量自动转成字符串,然后连接。结果是:"9010"
然后要赋给变量c,可是c是整型,所以再次自动转换为整型
-----------------------------------------------------
Dim aAsInteger
Dim bAsString
Dim cAsInteger
a = 90
b = "10"
c = a + b
Debug.Print c
这个你又能看出什么?
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
a = 90
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub
Private Sub Command1_Click()
Dim a As String
Dim b As String
a = 90
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub
Dim a As Long
Dim b As Long
a = "90"
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub
Private Sub Command1_Click()
Dim a As String
Dim b As String
a = "90"
b = "10"
Debug.Print a & b
Debug.Print a + b
End Sub
估计很多人认为我说vb是弱类型,就认为我贬低vb,其实这是误解。
现在弱类型语言是一种发展趋势
理解有误,VB并没有改变变量类型,VB只是把参与计算的值的类型转换了一下.
a = "abc"
如果是弱类型,上面的语句可以执行,并且变量 a 会变成字符串类型。
dim a
a=1
msgbox typename(a)
a="1"
msgbox typename(a)
a=#2008-10-01 23:59#
msgbox typename(a)
a=1.1
msgbox typename(a)
set a = createobject("scripting.dictionary")
msgbox typename(a)