行为差异Dim oDialog1 as Dialog1 = New Dialog1 VS Dim oDialog1 as Dialog1 = Dialog1

时间:2010-10-11 22:12:42

标签: vb.net new-operator

VB.Net 2005
我有一个现已关闭的Dialog1。要从模块中获取Dialog1的信息,我需要使用

Dim oDialog1 as Dialog1 = **New** Dialog1.

VB.Net 2008
我有一个仍然打开的Dialog1。要从模块中获取Dialog1的信息,我需要使用
Dim oDialog1 as Dialog1 = Dialog1

VB.Net 2005无法使用Dim oDialog1 as Dialog1 = Dialog1进行编译并坚持

发生了什么,为什么我需要不同的初始化语法?

1 个答案:

答案 0 :(得分:0)

Dialog1是您正在创建的对象的类型

Dim oDialog1 as Dialog1 = Dialog1

与说

相同
MyCat is a Cat, and it's a Cat.

没有意义。

如果你需要知道猫有多少腿,或猫是否毛茸茸,那么你可以说Cat.CountLegs,但你不能说Cat.GetName或Cat.Age,因为你不知道哪只猫你在谈论。

对话框也一样。

Dim oDialog1 as Dialog1 = Dialog1

不是指任何特定的Dialog,只是一般的Dialog1,它没有意义(也不应该在VB.NET 2008中编译)。

在哪里

Dim oDialog1 as Dialog1 = New Dialog1

正在为您提供一个名为oDialog1的全新Dialog1。你询问的关于oDialog1的一切都会给你一个关于Dialog1对象的通用默认值。

Dialog1没有位置,因为它还不存在。但是因为你已经使用NEW关键字创建了一个新的实例,所以oDialog1将是你的第一个Dialog1类型的对象 - 你可以给它一个位置,等等。

如果你打电话

Dim oDialog2 as Dialog1 = New Dialog1

然后你将有两个 Dialog1 - 每个都有一个单独的位置等。

如果你给Dialog1和oDialog1更好的名字,比如UserConfirmationDialog和confirmExit,它会更有意义。

然后会变成类似

的东西
Dim confirmExit as UserConfirmationDialog = New UserConfirmationDialog.

可能

Dim confirmDelete as UserConfirmationDialog = New UserConfirmationDialog.