国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

從VB6到VB.NET的變化綜述 (轉)

2024-07-10 13:02:41
字體:
來源:轉載
供稿:網友
隨著microsoft .net平臺的發布,visual basic開始成為一種完全面向對象的語言,簡稱為vb.net。雖然有了一些根本性的變化,開發者從vb6到vb.net的學習熱情依然相當高,即使對于有經驗的編程人員也是如此。本文中,我將列出visual basic語言中的變化,并在適當的地方舉例說明。這里所列出的可能不完全,但是已經包括了大部分的功能。如果你是一個想要轉到vb.net上去的 vb程序員,這篇文章就一定要讀一讀。

asp.net beta 1版本可以從http://www.asp.net/免費下載。本文中所討論的一些變化是屬于 beta 2版本的,這些 beta 2中的新內容在asp.net的beta 1 版本中是無效的,文中都作了注明。

數據類型的改變
.net平臺為所有支持語言提供了公共類型系統,這就意味著所有語言都必須支持支持公共語言運行時間環境所強制的相同的數據類型,如此就消除了不同語言之間數據類型的不兼容性。例如,在一個32位的windows平臺上,在c++這類語言中,integer數據類型占據4個字節,而在 vb 中則占據2個字節。以下是vb.net中與數據類型有關的變化:

在 .net下,vb.net 中的integer數據類型也是4個字節。
vb.net沒有currency 數據類型,作為代替,它提供了decimal。
vb.net 引入了一種新的數據類型,叫做char。 char數據類型占據2個字節,可以存儲unicode 字符。
vb.net 沒有variant數據類型。為了得到與variant類型相同的結果,你可以使用object數據類型。因為在.net中的一切,包括原始數據類型,都是一個對象,一個object類型的變量,它可以指向任何數據類型。
在vb.net中沒有固定長度字符串的概念。
在vb6中,我們使用type關鍵字來聲明用戶自定義結構。vb.net引入了與此目的相同的結構關鍵字,語法的其它部分是相同的:
structure mystruct1
  ...
end structure


變量聲明
現在看看一個簡單的vb6例子:

dim x,y as integer  

在這個例子中,vb6 將 x看成variant,把y 看成integer。vb.net改進了這個解釋,它將x 和y都創建成integer。另外,vb.net 還允許你在聲明語句中為變量賦初始值,如下:

dim str1 as string="hello"  

vb.net 還引入了read-only (只讀)變量。只讀變量不像常數,聲明它的時候不用初始化,但是一旦你給它賦值,就不能再修改。請看下面的例子:

'未初始化
dim readonly x as integer
'附值
x=100
'不能再被修改,因此下面的語句將出錯
x=200


數組
使用 vb6時,你可以通過編程來定義數組的上限和下限。而在vb.net中,數組的下限總是0,定義數組時是這樣的:

dim astates(50) as string  

這樣實際創建的元素是 51 個,其中 0是下限,50是上限。注意:在vb.net beta 1中,以上語句會創建50個元素,上下限是 0到 49。

變量范圍
考慮以下 vb6 代碼:

if x=y then
  dim z as integer
  ' other code
end if
z=100  'outside of if ... then block


以上代碼在vb6中運行得非常好,因為它沒有模塊級變量作用范圍。模塊級變量發生在其它高級編程語言中,如c++。在聲明模塊中定義的變量,如在 if ... then模塊中定義的變量,當這個聲明模塊結束時就會落在范圍之外。這樣一來,如果在其定義的if ... then模塊之外存取 z,在高級編程語言中就會導致一個錯誤。而vb.net與vb6相反,它使用了模塊層的變量范圍。


set和let聲明
在vb6中,你必須使用 set聲明為變量分配一個對象例示。出于默認屬性的原因,這在vb6 中是必須的。要想告訴vb你想給對象本身指定一個變量(與對象的默認屬性值相反),你就必須要使用set關鍵字。例如,在 vb6中:

dim x as variant
dim strname as string
'assign the value of text1.text to strname
'(text is the default property of the textbox control in vb6)
strname=text1
'here we assign the actual textbox object to the variable x
'note that we use the set keyword so vb knows we want to assign
'to x the object itself instead of the default property
set x=text1

但是在vb.net中,是不允許默認屬性的(除非是參數化了的屬性),因此就不需要使用 set關鍵字。同樣,let關鍵字也從vb.net 的語法中去掉了。

錯誤處理
visual basic最終結合了結構化錯誤處理。關鍵字try、catch和 finally使得錯誤處理變簡單,也使vb.net與c++或 c#這些語言可以并列起來。try ... catch的模式允許開發人員將可能導致例外的代碼放置在一個try模塊中。如果那個代碼確實造成了一個例外(與造成錯誤同義),就執行 catch 模塊中的代碼;這個模塊中的代碼應該是設計來處理例外的。

請注意,為了向后兼容,vb6中舊的錯誤處理技術( error resume next及類似的)還是受到支持的,但是當你用vb.net編寫新的應用程序時應該勇敢地爭取不使用這些舊的技術。下面的這些代碼片段說明了vb.net的各種錯誤處理技術:

try
  ...
catch
  ...
end try

上面的代碼只是捕捉相關的try模塊中沖突代碼所導致的例外。vb.net允許你使用多個catch 模塊來處理特殊的例外:

try
  ...
catch e1 as nullpointerexception
  ...
catch e2 as exception
  ...
end try

除了捕捉預先定義的例外,你還可以創建自己的定制例外類,這個類是從system.exception基礎類中繼承而來的。你還可以激活自定義例外,這與vb6中err 對象的raise方法相同:

if myvar < 1000 then
  throw new exception("business logic error")
end if

靜態方法
vb.net 允許你在類中創建靜態方法。靜態方法指的是那些不需要開發人員創建類的例示就能調用的方法。例如,如果有一個名為 foo的類,其中有一個非靜態方法nonstatic()和一個靜態方法static(),就可以這樣來調用 static()方法:

foo.static()  

但是,非靜態方法則需要創建類的一個例示,象這樣:

'create an instance of the foo class
dim objfoo as new foo()
'execute the nonstatic() method
objfoo.nonstatic()   

要想在一個vb.net 類中創建一個靜態方法,只需要給方法定義加上前綴shared關鍵字。

程序和函數
在默認狀態下,vb6中所有的程序參數都是通過引用方式(byref)來傳遞的,而在vb.net的默認狀態下,這些參數是用值方式(byval)來傳遞的。不管程序和函數是否接收參數,當調用它們的時候都需要圓括號。vb6中,函數返回值使用這樣的語法:functionname = return_value。在vb.net 中,你可以使用return關鍵字以return return_value方式來返回值,也可以繼續使用舊的語法,它們仍然有效。

屬性語法
在vb6 中,我們使用了property get 和property set/let在類中創建屬性,它們分別出現在單獨的程序中:

public property get propertyname() as datatype
  ...
end property
public property let propertyname(value as datatype)
  ...
end property


在vb.net中,property get 和 property let/set這兩個語句被合并成一個property語句,而不再是兩個單獨的語句。另外,在property 語句的set部分中,變量value指的是用戶給指定屬性賦值時輸入的那個值。

public [readonly|writeonly] property propertyname as datatype
  get
    return m_var
  end get
  
  set
    m_var = value
  end set
end property

結論
vb.net的語義和語法都發生了一些變化,這里所列舉的都是作為一個asp.net開發人員將要遇到的最重要的變化。當你用vb.net創建asp.net web頁面時,需要牢記的最重要的幾點是:

變量可以被分類,不再都是variants。就是說,如果你需要一個integer變量,就應該使用dim i as integer,而不僅僅是用dim i。給變量分類比無分類的變量的性能要好得多。
要牢記,vb.net要求子程序調用時在調用參數周圍加圓括號。 這就是說response.write "hello, world!" 會生成錯誤,正確的應該是response.write("hello, world!")。
vb.net 不再支持默認屬性,你必須對希望從一個對象中存取的屬性進行明確地說明。
聲明數組時要注意,vb.net中所有數組的下限都是0,上限則是由你規定的數字。
責任編輯:小李([email protected])
 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青浦区| 桐梓县| 山东| 图们市| 平罗县| 桓仁| 楚雄市| 日照市| 略阳县| 宁南县| 时尚| 当阳市| 玛沁县| 朝阳区| 滦平县| 桐梓县| 闸北区| 康平县| 彰化县| 夏邑县| 东城区| 永安市| 定州市| 江陵县| 确山县| 上蔡县| 夏河县| 故城县| 城固县| 梁河县| 浪卡子县| 邹城市| 青浦区| 哈巴河县| 沾益县| 突泉县| 文山县| 朔州市| 海兴县| 庆城县| 鄂托克旗|