关于VB.NET实例化对象的问题

时间:2021-11-27 09:23:09
        Dim panel1 As New Panel()
        Dim textBox1 As New TextBox()
        Dim label1 As New Label() -----------------------后面有或没有小括号有什么区别

       Label1.Location = New Point(&H280028)----------括号(x,y)懂意思。括号里的十六进制的数应该怎样理解啊 

       

5 个解决方案

#1


括号是表示是数组。

#2


1. 这个地方要仔细。你现在有胡乱抄代码的倾向。

2. 不要动不动就上 csdn 问。不要浪费时间,先把入门书上的所有例子都看懂、做“完”至少2遍。这些问题都是动手实践即可越过。

#3


最后一个标识的是创建对象是有实例化参数,参数的前后用圆括号。

vb.net 在这里对于圆括号的使用容易产生歧义,你需要根据上文来分析其含义。

#4


以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消息操作中鼠标坐标这一类参数的。

#5


不用睬#1,不懂乱说。
'按照标准的写法,创建对象会调用构造函数,这是显式调用无参数的构造函数
Dim panel1 As New Panel()
'兼容以前VB6的写法(构造时不能指定参数)
Dim panel1 As New Panel

一句话概括,空括号或无括号的写法是等价的。

#1


括号是表示是数组。

#2


1. 这个地方要仔细。你现在有胡乱抄代码的倾向。

2. 不要动不动就上 csdn 问。不要浪费时间,先把入门书上的所有例子都看懂、做“完”至少2遍。这些问题都是动手实践即可越过。

#3


最后一个标识的是创建对象是有实例化参数,参数的前后用圆括号。

vb.net 在这里对于圆括号的使用容易产生歧义,你需要根据上文来分析其含义。

#4


以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消息操作中鼠标坐标这一类参数的。

#5


不用睬#1,不懂乱说。
'按照标准的写法,创建对象会调用构造函数,这是显式调用无参数的构造函数
Dim panel1 As New Panel()
'兼容以前VB6的写法(构造时不能指定参数)
Dim panel1 As New Panel

一句话概括,空括号或无括号的写法是等价的。