我們要來看的第二個VB新語法稱為『區(qū)域類型推斷』,簡單的說,就是當(dāng)你宣告變量時不指定類型的時后編譯程序會自動幫你決定變量的類型,而不是一律的以object作為變量的類型,運算時再通過boxing來解決。
過去,當(dāng)你鍵入底下的程序代碼:
Dim v
這個變量v是Object類型,在舊版的VB 6.0當(dāng)中,則是variant,如今,當(dāng)你在編輯器當(dāng)中輸入這樣的程序代碼:
Dim v = 3
你的變量v類型會自動設(shè)為integer,倘若是:
dim v = 3.14
你的變量v類型會自動設(shè)為double。
總括來說,編譯程序會依照初始值來決定變量類型。
甚至,變量的類型也可以由函數(shù)的返回值來決定,例如:
Dim ret = getBMI()
嚴(yán)格說起來,這些動作都是編輯器自動幫你做的, 對程序代碼來說沒有什么太大的影響,有一些部分也是因為在過去VB本來就會進(jìn)行相當(dāng)多的隱含類型轉(zhuǎn)換,所以這些動作對開發(fā)人員來說沒啥特別的感覺,但是實務(wù)上它可以加快程序運行的速度(因為不需要再做這些類型轉(zhuǎn)換)
然而,你可能看到更多的使用場合是把這個機(jī)制和LINQ的查詢返回值混在一起,再回頭看前幾天介紹的LINQ語法:
’查詢BMI值大于25的人
Dim result = From c In matrix Where c.BmiValue > 25
從這邊你會看到通過查詢語法所返回的值,也是通過這樣的機(jī)制來建立的??偟膩碚fVB在語法上的更新,蠻多都實現(xiàn)在LINQ相關(guān)的應(yīng)用上,這也是先前說過VB新語法與LINQ幾乎脫不了關(guān)系。
另外,由于有類型推斷,你可以在VB當(dāng)中直接這么寫:

你可以直接把XML以Copy Paste的方式貼到程序代碼編輯區(qū),然后定義一個變量來承接,由于具有類型推斷的功能,因此xmlData變量會被定義成xElement類型,寫起程序來方便多了。
過去,當(dāng)你鍵入底下的程序代碼:
Dim v
這個變量v是Object類型,在舊版的VB 6.0當(dāng)中,則是variant,如今,當(dāng)你在編輯器當(dāng)中輸入這樣的程序代碼:
Dim v = 3
你的變量v類型會自動設(shè)為integer,倘若是:
dim v = 3.14
你的變量v類型會自動設(shè)為double。
總括來說,編譯程序會依照初始值來決定變量類型。
甚至,變量的類型也可以由函數(shù)的返回值來決定,例如:
Dim ret = getBMI()
嚴(yán)格說起來,這些動作都是編輯器自動幫你做的, 對程序代碼來說沒有什么太大的影響,有一些部分也是因為在過去VB本來就會進(jìn)行相當(dāng)多的隱含類型轉(zhuǎn)換,所以這些動作對開發(fā)人員來說沒啥特別的感覺,但是實務(wù)上它可以加快程序運行的速度(因為不需要再做這些類型轉(zhuǎn)換)
然而,你可能看到更多的使用場合是把這個機(jī)制和LINQ的查詢返回值混在一起,再回頭看前幾天介紹的LINQ語法:
’查詢BMI值大于25的人
Dim result = From c In matrix Where c.BmiValue > 25
從這邊你會看到通過查詢語法所返回的值,也是通過這樣的機(jī)制來建立的??偟膩碚fVB在語法上的更新,蠻多都實現(xiàn)在LINQ相關(guān)的應(yīng)用上,這也是先前說過VB新語法與LINQ幾乎脫不了關(guān)系。
另外,由于有類型推斷,你可以在VB當(dāng)中直接這么寫:

你可以直接把XML以Copy Paste的方式貼到程序代碼編輯區(qū),然后定義一個變量來承接,由于具有類型推斷的功能,因此xmlData變量會被定義成xElement類型,寫起程序來方便多了。