成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET語法快速入門

開發 后端
VB.NET大家都知道,但它的語法以及怎么具體的去用,大家可能不能全部明白,本文主要簡單介紹了VB.NET語法的一些使用以及注意事項,希望對大家的學習帶來收益。

很久以來我們都知道,VB因為缺乏完善的面向對象支持、缺乏高效的錯誤處理機制和性能表現不佳,因而一直受到某些人的嘲笑。VB.NET語法將徹底改變這種情況。

然而,VB.NET在這些方面的改進也要付出代價,許多舊的代碼需要手工進行轉換才能在VB.NET下運行。

下面幾個表格總結了VB.NET語言在語法上的改動之處。注意這些表格并沒有完全列出所有改動之處,但列出了最重要的一些改動。

表A對比了VB6中一些熟悉的語法形式及其在VB.NET中類似功能最接近的語法形式。

表A:VB.NET語法對比舊語法 新語法 說明窗體裝載事件,類初始化事件 Sub New procedure Sub New稱為構造方法(Constructor),它可以有參數。

Property Let Property Set Let關鍵詞不再有效。

Currency Decimal 在VB6中,Decimal是Variant的一種子類型,但在。NET中它是一種固有的數據類型。。NET不再支持Currency數據類型。

Variant Object VB.NET的Object數據類型兼有VB6 Object類型和Variant類型的能力。

Debug.Print Debug.Write Debug.WriteLine 這個變化只是名稱上的簡單變化:從Print變為Write和WriteLine. Wend End While VB.NET推薦使用While循環而不是Do循環。

為了讓VB.NET語言的數據類型和其他。VB.NET語言的數據類型相匹配,Microsoft修改了整數類數據類型的表示方法,并加入了一個新的數據類型。這些改動對于進行外部調用的方法尤其重要(比如API調用)。

例如,如果被調用函數需要一個32位的整數參數,則在VB6中它應該聲明為Long,在VB.NET中應該聲明為Integer.

表B:和整數有關的數據類型長度 VB6以及更早版本中的名稱 VB.NET中的名稱16 bit Integer Short 32 bit Long Integer 64 bit (無) Long

在VB.NET中,Microsoft減少了許多原先用于VB6的關鍵詞,代之以“框架類”。之所以要進行這種替換,是因為框架類中的功能對所有的.NET語言都有效。下表列出了部分受影響的關鍵詞。

表C:被替換的關鍵詞
VB關鍵詞 VB.NET名稱空間中的位置 方法/屬性

  1. Circle System.Drawing.Graphics DrawEllipse  
  2.       
  3.     Line System.Drawing.Graphics DrawLine  
  4.       
  5.     Atn System.Math Atan  
  6.       
  7.     Sgn System.Math Sign  
  8.  
  9.     Sqr System.Math Sqrt  
  10.       
  11.     Rnd Microsoft.VisualBasic.Compatibility.VB6 Rnd  
  12.       
  13.     Round Microsoft.VisualBasic.Compatibility.VB6 Round  
  14.       
  15.     Lset System.String PadRight  
  16.       
  17.     Rset System.String PadLeft  
  18.       
  19.     DoEvents System.Winforms.Application DoEvents  
  20.       
  21.     VarType System.Object GetType(返回類Type的對象,其中包含了可提取出信息的屬性)  
  22.  

在VB.NET中,變量、數組的聲明和初始化方法都有所變化,下表概要地列出了VB.NET在這方面的變化。

表D:新的聲明方法
    變化 語法舉例
    單個聲明語句中不能聲明多種類型。 'VB.NET不允許出現下面這種聲明!
    Dim nCount As Integer, bAnswer As Boolean
    聲明變量時可賦予初始值 Dim nCount As Integer = 20
    Dim nDoubleCount as Integer = nCount * 2
    允許為數組元素指定初始值 Dim nIndex(3) As Integer = (3, 5, 7)
    不能用Redim進行聲明,只能用Redim重新定義數組大小。 '下面這行代碼在VB.NET中不合法!

  1. Redim sName() As String 

大量新關鍵詞實現了VB.NET中的新功能。下面是一些最重要的關鍵詞及其用途、用法簡例。

表E:VB.NET的新關鍵詞
關鍵詞 用途 簡單例子
Inherits 指向基類,用于實現繼承。 Inherits System.WinForms.Form
MyBase 在子類的代碼中,MyBase引用基類。 StringProperty = MyBase.StringProperty
Shared Shared表示類的所有實例共享類里面的變量。

  1. Public Shared BaseLocation As String  
  2.     Try  
  3.     Catch  
  4.     Finally  

Throw 這是新的錯誤處理關鍵詞。Try開始一個啟用錯誤控制的代碼塊,Catch標識一個對特定錯誤進行處理的代碼塊,Finally開始一個不管錯誤是否出現都必須執行的代碼塊,Throw拋出一個錯誤(類似于VB6的Err.Raise)。

  1. Try  
  2.     rsRecordset.Update  
  3.     Catch  
  4.     LogError ("更新失敗!")  
  5.     Finally  
  6.     rsRecordset.MoveNext  
  7.     End Try  
  8.     ReadOnly 在屬性聲明中,ReadOnly指示一個只讀的屬性(只有Get過程的屬性)。 Public ReadOnly Property  
  9.     StringProperty() As String  
  10.     WriteOnly 在屬性聲明中,WriteOnly指示一個只能寫入的屬性(只有Set過程的屬性)。 Public WriteOnly Property  
  11.     StringProperty() As String  
  12.     Char 這是VB.NET中的單字符數據類型。 Dim chrInitial As Char  
  13.     Imports 在當前代碼模塊中引入指定類。 Imports System.WinForms  
  14.     Namespace 為模塊指定名稱空間(Namespace)。 Namespace MyApplicationName  
  15.     Overloads 重載。Overloads表示同一個函數名字有多個版本的實現,編譯器通過函數的參數列表區分它們。 '同一個模塊之內包含如下多個聲明...  
  16.     Overloads Sub Display(sIn as String)  
  17.     Overloads Sub Display(nIn as Long)  
  18.     Overrides 覆蓋。Overrides表示成員函數覆蓋當前類所繼承的基類中的指定方法。 Inherits MyBaseClass  
  19.     Overrides Function Name(nID as Long) _  
  20.     As String  
  21.     Overridable Overridable表示任意從當前類繼承的類都可以覆蓋指定成員函數。 Overridable Function Name _  
  22.     (nID as Long) As String  
  23.     MustOverride MustOverride表示任意從當前類繼承的類都必須覆蓋指定成員函數。 MustOverride Function Name _  
  24.     (nID as Long) As String  
  25.  
  26.     Protected Protected表示成員函數只能從當前類的派生類訪問。 Protected Sub Clear()  
  27.  

在以前的VB中,直至VB 4為止, Let、Set和Get屬性過程是分離的。VB.NET把同一屬性的屬性過程放到了一起:

  1. Private msMyStringProperty As String  
  2.     ' 聲明區  
  3.     Public Property MyStringProperty As String  
  4.     Get  
  5.     MyStringProperty = msMyStringProperty 
  6.     End Get  
  7.  
  8.     Set  
  9.     msMyStringProperty = MyStringProperty  
  10.     End Set  
  11.     End Property  
  12.  

VB.NET不再有Let屬性過程,因為所有賦值語句的語法(無論是對象還是非對象)都已經一樣。

語言方面的改動遠遠超過了對體系結構的改動。對于大多數人來說這些改動都有意義,但仍有人對某些改動存有異議。例如,在以前的版本中,許多任務可以用多種不同的方法完成,統一的編碼標準要么不存在,要么很難執行。為了“清理”VB語言,Microsoft對VB作了一些重大的改動,許多以前可以有多種實現方法的任務現在只有一種方法。

除了前面幾個表格列出的內容之外,下面是一些特別需要注意的地方。

首先,向過程參數傳遞數據的默認方式由原來的傳遞引用(ByRef)變成了傳遞值(ByVal),這是一個很重要的改動。通過引用傳遞參數比通過值傳遞參數面臨著更多的危險,這種危險在于被調用過程可能無意地改變參數的值。VB.NET仍舊允許以引用方式傳遞參數,但默認參數傳遞方式的改變意味著程序必須作相應的調整。

第二,VB.NET中不再有Set語句,把對象引用賦給變量現在只需一個等號就可以了,對象可以象任何其他值一樣對待。雖然省略Set簡化了代碼,但也有一個附帶的影響:默認屬性不再有效。

例如,下面這種屬性值引用方法不再合法:

Text1 = "這是對象的默認屬性值。"

相反,屬性值必須按照如下方式顯式引用:

Text1.Text = "這是對象的默認屬性值。"

從表面上看來,VB.NET作這種要求似乎沒有必要。但事實上,它對于擺脫默認屬性來說卻是必要的。例如,假設有一個名字為objFoo的對象變量,由于沒有了Set語句,假若屬性值仍舊可以象原來一樣引用,下面這個語句到底是什么意思就很難確定了: 

  1. objFoo = Text1 

這個語句是設置了一個對Text1的引用,還是把Text1的Text屬性值賦給了objFoo?我們無法作出判斷,編譯器也同樣不能判斷。因此,拋棄Set語句也就意味著必須放棄默認屬性值。

NET中最不讓人喜歡的改動:Microsoft改變了一些早就在使用的數據類型的含義。在。NET中,Integer變成了32位,而Long則是64位。可以想象,這種改變將導致程序員頻繁地用錯變量類型。例如,調用某個API函數時應該使用16位的Integer還是使用32位的Integer?但愿Microsoft能夠重新考慮這個決定,采用一些新的變量類型名字,如Int32和Long64.

VB.NET引入了Option Strict關鍵詞。Option Strict關鍵詞用于替代Option Explicit.原來的VB允許把一個數字值賦給字符串變量,或者進行其它類似的不正常賦值操作,Option Strict結束了這種情況。聲明Option Strict告訴Visual Basic.NET不要進行任何強制的類型轉換。當然,VB.NET也不是完全限制了類型自動轉換:它允許進行向下的自動類型轉換(Cast),但不支持向上的自動類型轉換。例如,如果不是使用“sngvariable = CSng(dblvariable)”這類語句進行顯式的類型轉換,聲明為Single的變量不能設置為Double變量的值,因為它可能導致數據丟失;然而,Double變量可以直接設置為Single類型變量的值,且無需顯式地進行類型轉換,因為這里不存在數據丟失問題。使用Option Strict能夠幫助開發者減少許多錯誤,包括許多難以調試的錯誤。附帶說明:使用Option Strict時不允許再使用延遲綁定。

本文主要簡單介紹了VB.NET語法的一些使用以及注意事項,希望對大家的學習帶來收益。

【編輯推薦】

  1. 解析 VB.NET如何連接數據庫
  2. 談談 VB.NET數組的使用
  3. 淺談 VB.NET中的跨進程消息鉤子
  4. 十分鐘 教你如何使用VB程序
  5. VB.NET 路在何方?
責任編輯:仲衡 來源: csai
相關推薦

2009-10-09 16:00:34

VB6.0開發

2010-01-22 17:55:23

VB.NET語法糖

2009-10-23 14:06:07

VB.NET類對象

2009-11-02 13:54:27

VB.NET shel

2009-10-30 13:31:06

VB.NET名空間

2009-10-28 15:01:59

VB.NET SHEL

2009-11-02 12:35:10

VB.NET追加文件

2009-10-28 13:23:52

VB.NET可選參數

2009-10-27 09:45:03

VB.NET數組

2010-01-11 09:53:28

VB.NET語法

2009-10-28 13:24:25

VB.NET文件

2009-11-02 17:54:44

VB.NET數組

2009-11-02 15:49:23

VB.NET顯示系統信

2009-10-21 09:40:23

VB.NET搜索

2009-11-10 16:55:05

VB.NET調用API

2009-10-27 14:32:45

VB.NET類型級命名

2009-10-30 10:47:48

VB.NET垃圾收集器

2009-11-10 13:43:28

VB.NET Comm

2009-10-27 14:50:25

VB.NET控件數組

2009-10-29 14:02:24

VB和VB.NET比較
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 2020天天操| 欧美一级特黄aaa大片在线观看 | 日韩高清一区 | 在线免费观看视频你懂的 | 精品欧美色视频网站在线观看 | 亚洲一区二区视频 | 日日骚视频 | 国产精品一区二 | 精品日韩一区二区三区 | 亚洲精品久久久蜜桃网站 | 一区二区久久 | 日本欧美在线观看视频 | 国产欧美在线 | 在线高清免费观看视频 | 日韩精品一区二区三区在线观看 | 久久国产成人 | 一区欧美 | 午夜视频在线观看网址 | 国产乱人伦 | 亚洲成人免费网址 | 国产精品久久久久久久午夜片 | 国产十日韩十欧美 | 一区二区三区四区日韩 | 国产精品久久久久久久久久久久 | 国产免费又色又爽又黄在线观看 | 国产精品久久久久久中文字 | 国产1区2区3区 | 午夜免费视频观看 | 久久久.com| 成人h视频在线观看 | 午夜一区 | 天天干干| 成人国产精品色哟哟 | 伊人影院在线观看 | 欧美精品久久久 | 97av在线| 久久免费观看视频 | 亚洲视频在线一区 | 超碰最新在线 | 欧美日本韩国一区二区三区 | 日本高清中文字幕 |