2010-10-11 90 views
0

VB.Net 2005
我有一個現在關閉的Dialog1。從模塊中得到的Dialog1信息,我需要使用行爲差異Dim oDialog1 as Dialog1 = New Dialog1 VS Dim oDialog1 as 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,堅持

這是怎麼回事?爲什麼我需要不同的初始化語法?

回答

0

Dialog1是您要創建的對象的類型

Dim oDialog1 as Dialog1 = Dialog1 

是等於說

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

沒有引起太大的意義。

如果您需要了解貓的腿數,或者貓是毛茸茸的,那麼您可以說Cat.CountLegs,但是您不能說Cat.GetName或Cat.Age,因爲您不知道哪個你正在談論的貓。

這與您的Dialog相同。

Dim oDialog1 as Dialog1 = Dialog1 

是不是指任何具體的對話,只是Dialog1在一般情況下,這是沒有意義的(而且不應該在2008年VB.NET編譯)。

凡爲

Dim oDialog1 as Dialog1 = New Dialog1 

是給你一個全新的Dialog1,叫oDialog1。你所問的關於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. 
+0

三江源邁克爾。我已將對話框更改爲具有相同結果的表單。如果我使用Dim oForm1 = NEW Form1,它不會檢索(例如)oForm1.RadioButton1.Checked狀態。如果我放下NEW它正確地檢索RadioButton狀態? – 2010-10-12 05:06:45

+0

啊,這是因爲您的應用程序在您啓動應用程序時爲您創建了一個新窗體。這有點棘手。 Form1是對象的類型(即,您可以根據需要啓動儘可能多的Form1)。您的用戶需要在程序啓動時看到某些內容,以便運行時自動爲您創建一個Form1實例,並且無論出於何種原因它都會*調用新實例「Form1」。這就是造成混亂的原因。你有兩個不同的名稱 - 一個模板和一個實際的表單。電腦瞭解正在發生的事情,但這對我們來說是令人困惑的。 – 2010-10-12 21:55:53