来给大家扫扫盲。微软最早的 QBasic 语法,用 LET 语句进行赋值 LET A = 10 不过 Basic 语法中操作符 = 没有二义性(不像 C 为了区分赋值和比较不得不分为 = 和 ==),所以省略 LET 关键字没什么问题。但是微软给 COM 对象定义了一个默认成员,就惹出麻烦来了。 Text1 = x '这个没问题,表示将 x 给 TextBox 的默认成员 Text 赋值,是下面的缩写' Text1.Text = x '当然前提是符合以下情况之一:' '1)x 是显式的字符串' '2)x 不是对象,但是可以隐式转化为字符串' '3)x 是对象,但是他的默认成员(可递归默认成员的默认成员)是显式/隐式的字符串' Dim t As TextBox ... t = Text1 '这就有二义性了:' '到底是要将对象 Text1 赋值给 t 变量;' '还是要进行默认成员的赋值 t.Text = Text1.Text?'所以 VB 规定: 1)对象赋值用 SET,并且不可省略 SET 关键字。 2)普通赋值用 LET,并且可以省略 LET 关键字。
Set 语句 将对象引用赋给变量或属性 这个说法准吗, 楼上的朋友说 XingMingF.RowSource是对象你们两个到底哪个说法对呢?
同一个控件的不同属性中有可能是文本 也有可能是对象 还有可能是图片 当然要用不同的方法赋值。
VB中Set用法的探讨
msgbox typename(XingMingF.ListField)
XingMingF 就是一个控件对象呀,为什么XingMingF.RowSource要用SET,而XingMingF.ListField不用SET.
但你现在不是看XingMingF 这个层次的
而是看XingMingF.RowSource和XingMingF.ListField,这是XingMingF所属的属性XingMingF.RowSource是对象XingMingF.ListField是值
LET A = 10
不过 Basic 语法中操作符 = 没有二义性(不像 C 为了区分赋值和比较不得不分为 = 和 ==),所以省略 LET 关键字没什么问题。但是微软给 COM 对象定义了一个默认成员,就惹出麻烦来了。
Text1 = x
'这个没问题,表示将 x 给 TextBox 的默认成员 Text 赋值,是下面的缩写'
Text1.Text = x
'当然前提是符合以下情况之一:'
'1)x 是显式的字符串'
'2)x 不是对象,但是可以隐式转化为字符串'
'3)x 是对象,但是他的默认成员(可递归默认成员的默认成员)是显式/隐式的字符串'
Dim t As TextBox
...
t = Text1
'这就有二义性了:'
'到底是要将对象 Text1 赋值给 t 变量;'
'还是要进行默认成员的赋值 t.Text = Text1.Text?'所以 VB 规定:
1)对象赋值用 SET,并且不可省略 SET 关键字。
2)普通赋值用 LET,并且可以省略 LET 关键字。
Set 语句 将对象引用赋给变量或属性 这个说法准吗, 楼上的朋友说 XingMingF.RowSource是对象你们两个到底哪个说法对呢?