VB.Net語言方面的改進(轉)
2024-07-10 13:02:31
供稿:網友
我們在很多的編程論壇或者新聞組中可以看到c++的擁護者將vb稱為一個玩具語言(toy language)。其中vb最被人詬病的是它不真正支持面向對象編程(oop)。
在新的visual basic中,這些都將成為過去。visual basic.net將真正支持oop。繼承(inheritance)、多態(polymorphism)以及重載(overloading)。當然還不止這些。包括一些新的數據結構、結構性的錯誤控制(error handing)以及線程。這些都將被新的vb所支持。
繼承
假設你編寫了一個只包含一個函數的名稱為baseclass的基本
類:
function getcustomername()
' do some stuff
end function
如果你想建立一個新類,并使用baseclass中的getcustomername
函數。但有不想重寫一編代碼。那么通過繼承,你可以這樣編寫新類:
inherits baseclass
function getcustomerid()
' do some stuff
end function
重載
重載就是建立兩個具有同樣你名稱但是參數屬性不同的函數的過
程。假設有getcustomid函數根據輸入輸出用戶的id號碼。那么該函數可能有以下兩種類型:
function getcustomerid(custname as string) as integer
' 通過用戶名獲得用戶id
end function
function getcustomerid(purch as long) as integer
' 根據購物單號碼獲得用戶id
end function
通過重載,你就可以根據不同類型的輸入調用同一個函數。
實際上現在的vb在某種程度上提供了重載的功能,考慮下面的函數:
function getcustomid(vin as variant) as long
getcustomid = vin
end function
你可以以下面兩種方式調用
id = getcustomid("123")
或者
id = getcustomid(123)
那么為什么還要在新版本中引進重載呢?這是因為新的visual
basic引進了新的特性:類型安全(default type safety)。在visual basic.net中,variant類型將不復存在,詳細的介紹看下面關于升級部分的內容。
多態
多態是在一個類中重新定義一個函數的過程。例如你需要建立一
個基于baseclass類的子類,但是又需要重新編寫getcustomername函數,在新版的vb中,你就可以這樣寫:
inherits baseclass
function getorders()
overrides function getorders()
...
end function
線程
新的visual basic語言結構部分將包含建立多線程,一個線程建
立的范例如下:
set t = new thread(new threadstart
(addressof(baseclass.function1))
從上面的范例還可以看到,visual basic.net中的addressof函
數將真正返回函數的指針。這在進行api調用,例如回調函數方面將是很有幫助的。
錯誤處理(error handling)
visual basic.net的另外一個大的改進就是錯誤處理。visual
basic將提供try…catch…finally結構,就象delphi中的那樣(微軟的原文是:just like those "respectable" languages :-))。例如:
sub safewrite()
try
open "testfile"
...
write #1
catch
kill "testfile"
finally
close #1
end try
end sub
升級
當代碼升級后,visual basic.net會建立一個新的升級工程。下
面通過幾個例子來說明你的代碼做了那些升級
variant類型到object類型
以前版本的visual basic支持variant數據類型,該類型可以設
定為除了固定程度字符串外的任何原始數據類型和empty,error,nothing和null。在visual basic.net中,object
數據類型可以設定為任何原始數據類型和empty,
error,nothing,null和對象指針。當你的工程升級到visual
basic.net后,任何variant定義都會改變為object。
同樣,當你在編輯器中插入代碼時,variant關鍵字也會被替換為
object。
integer數據類型到short數據類型
在visual basic 6.0中,16bit數現在稱為short。32bit數稱為
integer(64bit數稱為long)。當工程升級后,數據定義會做如下改動:
dim x as integer
dim y as long
更改為:
dim x as short
dim y as integer
屬性語法
visual basic.net對于自定義屬性的語法作樂更加直觀的更改,
將get和set合而為一。例如原來的屬性如下:
property get myproperty() as integer
m_myproperty = myproperty
end property
property let myproperty(newvalue as integer)
m_myproperty = newvalue
end property
升級后更改為:
property myproperty() as short
get
m_myproperty = myproperty
end get
set
m_myproperty = value
end set
end property
vb窗體到windows窗體
visual basic.net包含新的窗體包,windows窗體,windows窗體
包含內含菜單編輯器。你的vb窗體會升級到windows窗體。
界面
在先前的版本中,公用類界面對于用戶總是隱藏的。在visual
basic.net中,公用類可以在代碼窗口中瀏覽和編輯。
升級報告及注釋
當工程升級后,升級報告會添加到你的工程中,詳細列出所有升
級后的你所需要對代碼做的更改。同時代碼中會加入注釋提示你注意任何潛在的問題。這些注釋自動出現在
visual basic.net的任務列表中。
注冊會員,創建你的web開發資料庫,