常有人以為 VB.NET 程式的執行效能不如 C#,但根據 msdn 的說法,VB.NET 和 C# 都是編譯成 MSIL 中繼語言,因此基本上以二者所寫出來的應用程式也具有相同的效能。最常導致二者在 web 應用程式中,執行效能差異的罪魁禍首,首推過去在 ASP 中用 VBScript 不須明確宣告「變數」及其「型別」的習慣。因為在 VB.NET/ASP.NET 中,沒指定 As 的變數與引數其型別將會是 Object,該型別並非效能最佳型別。
在 VB.NET 中明確地用 As 指定型別可提高效能,因為型別推斷的時機,會從執行時期提前至編譯時期,能防止源碼因疏忽導致「晚期繫結」,可避免 Common Language Runtime 被迫在執行階段去做型別檢查和成員查閱。
Dim var As New <型別>()
就是下方這一行的縮寫:
Dim var As <型別> = New <型別>()
根據 msdn 的說法,許多 VB 6 的程式員都不使用「As New」來宣告變數和產生物件 instance,因為這在 VB 6 中會降低效能。但在 VB.NET 中,As New 語法並不會降低效能,因此開發人員可以任意使用。
(本文在版工的舊 Blog 中,發表日期為 2006/05/05)