Dim panel1 As New Panel()
Dim textBox1 As New TextBox()
Dim label1 As New Label() -----------------------后面有或没有小括号有什么区别
Label1.Location = New Point(&H280028)----------括号(x,y)懂意思。括号里的十六进制的数应该怎样理解啊
...全文
10205打赏收藏
关于VB.NET实例化对象的问题
Dim panel1 As New Panel() Dim textBox1 As New TextBox() Dim label1 As New Label() -----------------------后面有或没有小括号有什么区别 Label1.Location = New Point(&H280028)----------括号(x,y)懂意思。括号里的十六进制的数应该怎样理解啊
以Dim panel1 As New Panel()来说明:
带有new,表示调用默认构造函数初始化,可省略后面的括号。即,带有new声明是初始化一个panel的实例panel1,与有无括号无关。即:
Dim panel1 As New Panel()
等价于
Dim panel1 As New Panel
因为已经初始化了,所以你可以尝试用debug.print(panel1.gettype.name)来查看它的类型。
若去掉new,则带有括号就是数组。无论括号在变量后还是类型后,例如:
Dim panel1 As Panel() '这种就相当于一个空指针,不能在小括号里面初始化元素个数。
等价于
Dim panel1() As Panel '这种如果在小括号里面初始化元素个数,那就是一个已经初始化完毕的数组,它已经存在于内存,可以直接操作。
第二种声明没有设定数组大小时,和第一种相同,都是一个空指针而已。这两种数组都可以后接 =new Panel(){new panel,new panel}这样的形式初始化。关于这个问题可以去学习一下数组方面的内容。
然后是那个point初始化的问题:
point结构有若干种构造函数:
1、无参数——x,y均为0
2、用x,y初始化
3、用size结构初始化
4、用一个integer初始化
除了在代码提示中可以看到的这几种之外,还有一种:
5、用复制构造函数初始化,即用一个point结构来初始化
关于每一种初始化方式你可以自己写测试代码来测试一下初始化结果和是对参数的浅拷贝(复制了指针)还是深拷贝(复制了值)。4可能不是很好理解,这种初始化方式dw的低16位是x值,而高16位是y值。你可以自己修改一下你的16进制数,别都是28,然后输出一下x,y。这种初始化方式应该是为了兼容类似windows消息操作中鼠标坐标这一类参数的。