Can you summarize the following document?
        
  VB.Net的資料型別,實際上是.Net Framework定義的資料型別。  此外,還有SByte、UShort、UInteger、ULong等無符號資料型別。  &O123表示八進位制;&H123表示十六進位制。

  VB使用的名字是大小寫不敏感的。但是,CLR是大小寫敏感的。所以建議保持一致的大小寫。

  VB自版本5以後的資料型別來源於COM,而其根源是OLE資料型別。  在與空值做比較時,需要區分各種不同用法:  對於可空型別,實際上是Nullable(Of T)泛型結構。例如,下述三行等價: 比較表示式someVar = Nothing的結果永遠是Nothing,應該用someVar.HasValue()方法去判斷是否為空,或者用Is或IsNot關鍵字。

  陣列的下標開始自0,這遵從了.NET的標準。如果不指定陣列的下標上界,則為動態陣列,其長度可以動態調整。

  

  包括下述幾種:  或

  實現迭代器遍歷一個序列,每次獲取一個返回值。迭代器可以作為一個方法或屬性的get訪問器,其中的Yield 語句返回迭代器的返回值,並記住當前執行的位置。下次再呼叫迭代器,從該執行位置恢復執行,直至迭代器程式碼執行完或者遇到Exit Function或Return語句。編譯器把迭代器作為一個狀態機的類。

  物件導向時,類的宣告範例:  上述示例中的Public關鍵字表示可存取性(accessibility),表示可以被任意程式碼存取;它可以替換為其他的可存取性:Private(僅限該Class自身存取)、Friend(僅限同一專案中的程式碼存取)、Protected(僅限自身或衍生類別存取)、Protected Friend等。如果使用ReadOnly,則表示資料成員或屬性是隻讀;WriteOnly表示只寫。Shadows關鍵字表示覆蓋父類中同名(但不一定引數相同)的Event。使用關鍵字MyBase引用基礎類別。  類可用繼承修飾詞:NotInheritable關鍵字,表示該類不能做基礎類別;MustInherit關鍵字,表示這是一個抽象類。  類的屬性與方法能否被覆蓋:Overridable關鍵字表示可被覆蓋;Overrides關鍵字表示覆蓋了基礎類別中同名的方法或屬性;NotOverridable關鍵字表示不可覆蓋;MustOverride表示方法或屬性僅宣告沒有實現,這時該類必須有MustInherit修飾詞,是一個抽象類或者介面,僅能包含屬性、方法、函式的宣告。  如同其他.Net語,Visual Basic不允許多重繼承,但可以同時實現多個interface。

  介面是一類特殊的抽象類,不能包括可執行程式碼與類的資料成員的宣告:  介面中這些成員都強制是Public可存取性。  實現一個介面,使用Implements關鍵字:

  基於繼承的多型,是指用基礎類別型別的變數繫結不同的子類別物件,這樣呼叫基礎類別變數的方法,在執行時動態確定實際執行了哪個衍生類別的同名的方法。多型的優點是可以針對基礎類別(或介面)的方法來寫一個通用的過程或者資料容器,適用於各種不同的衍生類別的具體實現。

  委託本質上是一種Class,衍生自System.Delegate,包含了三部分資料:一個類物件的地址、該物件所屬類的一個方法的地址,以及另一個委託的引用(reference)。前兩部分可以實現對一個類物件的方法的呼叫;第三部分把委託形成一個連結序列,使其依次被呼叫執行。如下宣告瞭一個委託:  委託常用於事件處理(Event Handler)。.Net Framework的事件是類的屬性(實際上是一個巢狀類),用於封裝引數格式固定的委託;該委託的引數總是為(ByVal sender As Object, ByVal e as System.EventArgs),返回值為void(即Sub型別)。例如:  對一個具體的例項,可以給它的事件在執行時動態追加上一個或多個事件處理函式: AddHandle指向引發事件的物件;AddressOf把一個函式或過程名轉化為一個隱式建立的委託例項,用於確定該事件物件所要呼叫的事件處理程式。在AddressOf關鍵字可隱式建立一個引用特定過程的委託的例項。  程式可以丟擲一個事件:

  using語句,定義一個範圍,在範圍結束時自動釋放物件所佔用的資源。

  例如:

  集合(Collection)物件的初始化與普通類物件的屬性初始化,分別使用From與With關鍵字。例如:

  例如:

  即無名的函式或過程,作為表示式的值。可以寫為一行或多行。例如: 可以在宣告匿名函式的同時呼叫它。單行的lambda表示式不能使用Return關鍵字,其返回型別是自動推導得出;其引數要麼都是用As關鍵字指明型別,要麼全部是自動推匯出型別。  lambda表示式在定義時可以使用所在上下文(context,即C++語言的閉包closure)的區域性變數、引數、屬性、Me等等的值,即使lambda表示式離開了定義時所在的context,這些被使用的區域性變數等的值仍然有效。這是因為lambda表示式在定義時把所用到的context的值儲存到它自己的定義類中。lambda表示式可以巢狀定義。

  例如:

  Try Catch ex As Exception When condition Catch ex As Exception Finally End Try

  From element [ As type ] In collection [, element2 [ As type2 ] In collection2 [,... ] ] [Where 表示式]

  這裡給出了一個Hello World的例子。通過它們您可以更好地理解Visual Basic的特性。(此原始碼執行於命令列下)  Module Mdl_Main End Module  這個程式能輸出"Hello World"。  Module Mdl_Main  第一行是模組定義,名稱空間的定義一般可以省略。VB.NET中,所有函式,過程與變數的宣告都必須在模組或者類的內部,而不能直接存在於名稱空間內部。 Sub Main()  第二行定義了名為Main的過程。一般來說,“Sub Main()”是程式的入口點。 Console.WriteLine("Hello World")  第三行輸出“Hello World”。 End Sub  第四行結束了過程Main的定義。 End Module  第五行結束了模組Mdl_Main的定義。

  與舊版VB(VB 6.0及以前)相比較,VB.NET明顯受到了.Net Framework中其他語言思想的影響。與舊版VB相比,VB.NET更加嚴格而不失靈活。  Visual Basic 6:(注意此過程的名稱不可改變)  Private Sub Button1_Click() End Sub  VB.NET:(注意此過程的名稱無關緊要)  Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click End Sub

  與C家族語言相比,VB.NET則較多保留了VB的特徵,比如:  下面這兩份功能一致的程式碼展現出了VB.NET與C#的很多不同之處:  Namespace N  End Namespace  namespace N  VB.NET與C#同為.Net Framework的兩大主力程式設計語言,儘管有著各種各樣的不同,兩者最終都編譯為MSIL並由CLR執行。兩者功能基本一致,並可以在.Net Framework框架下方便地互相呼叫與協同開發。關於兩者的優劣一直見仁見智。

  C語言編寫的DLL檔案,VB在呼叫時,需要注意:對於C語言的陣列指標,在VB中呼叫時應將陣列的首元素傳遞給DLL。不能直接傳遞陣列名,因為如果傳遞陣列名,VB實際會傳一個複雜的結構型別給DLL。C函式無法確定陣列大小,通常用另一個引數指出陣列的大小。

  

  Visual Basic.NET(VB 7.0)是隨Visual C#和ASP.NET一起在2002年釋出的最初始的VB.NET版本。C#被大力宣傳為微軟對付JAVA的王牌,受到媒體極力關注。然而VB.NET(有時被稱為VB 7.0)影響面不廣,這導致VB社群之外很少人關注它。那些試用過此版VB.NET的人在層層幕布下發現一個強大卻艱深的語言,而且還有不少缺點,例如它的執行階段元件(Run-Time)比VB6大了十倍,儲存器使用量也大大增加。  VB 7.0引起了廣泛的爭議,主要原因在於對舊版VB的改動過大。許多資深的VB程式設計師抱怨VB.NET,因為VB.NET 2002丟掉了許多不再發行的VB6中使用的大量語言結構和使用者介面功能,並且對保留下來的東西也改變了語意。例如,在VB.NET引數預設是以值方式傳遞的,而不是以引用方式。VB.NET 2002被半嘲諷半認真地稱為Visual Fred或VB DOTNOT。作為對2005年3月8日微軟拒絕為VB6再提供維護與支援的迴應,當月月底出現了反對者的請願。  VB.NET的支持者們認為新語言在很多方面比舊版本更為強大,比如它以相比早期版本更為自然、緊密和完全的方式地加入了現代物件導向的程式設計正規化。反對者們有不同意見,雖然VB6對物件模型支援有缺點,但是二次開發升級到VB.NET的成本比升級後的收益要高得多。而開發軟體釋出因特網版本的獨立程式設計師也對VB.NET的RunTime尺寸過大不滿。  針對開發者的不滿,微軟主要做了如下努力:使新的開發更容易啟動,而把已經開發的VB6程式碼升級到VB.NET。例子主要包括:完成VB6中的常見任務如列印預覽;整合VB6和VB.NET解決方案(dubbed VB Fusion),從VB6程式碼轉換到VB.NET。  微軟在後續版本中撤銷了一些過激的更改,並且吸取了經驗。在以後版本中,語法的更改變得更加謹慎。

  Visual Basic.NET 2003(VB 7.0)和.NET Framework 1.1一起釋出。新功能包括對.NET Compact Framework的支援和更好的VB升遷嚮導。並改進了執行狀況,IDE穩定性(尤其是後臺編譯器),以及執行時RunTime穩定性。另外,VB.NET 2003還有一個學院版Visual Studio.NET 2003 Academic Edition(VS03AE),它是分發給各國某些學者免費使用的版本。

  Visual Basic 2005(VB 8.0)是VB.Net的重大轉變,微軟決意在其軟體名稱中去掉了.NET部分。在VB2005中,微軟增加了許多新功能,以引用VB對於初學者來說的一些優點:  主要的變動:

  Visual Basic 2008(VB 9.0)於2007年11月9日與Microsoft.NET Framework 3.5一起釋出。  在VB2008中,微軟增加了許多功能,包括:

  Visual Basic 2010於2010年4月釋出。

  Visual Basic 2015(VB 14.0)於2015年7月20日釋出。
Visual Basic.NET(VB.NET)是.NET Framework框架下的一種多重程式設計正規化高階語言。