2008年6月24日 星期二

VB當中的新語法(二) - 區域型別推斷 與 XML

當你看完筆者這幾篇關於VB的新語法介紹之後,你會發現其實都跟LINQ有很密切的關係,儘管有些功能看似語法上的新擴充,但是實務上會使用到這些語法的場合,大多跟LINQ多少脫不了干係呢~

接著我們要來看的第二個VB新語法稱為『區域型別推斷』,簡單的說,就是當你宣告變數時不指定型別的時後編譯器會自動幫你決定變數的型別,而不是一律的以object作為變數的型別,運算時再透過boxing來解決。

過去,當你鍵入底下的程式碼:

Dim v

這個變數v是Object型別,在舊版的VB 6.0當中,則是variant,如今,當你在編輯器當中輸入這樣的程式碼:

Dim v = 3

你的變數v型別會自動設為integer,倘若是:

dim v = 3.14

你的變數v型別會自動設為double。
總括來說,編譯器會依照初始值來決定變數型別。

甚至,變數的型別也可以由函式的回傳值來決定,例如:
Dim ret = getBMI()

嚴格說起來,這些動作都是編輯器自動幫你做的, 對程式碼來說沒有什麼太大的影響,有一些部分也是因為在過去VB本來就會進行相當多的隱含型別轉換,所以這些動作對開發人員來說沒啥特別的感覺,但是實務上它可以加快程式運行的速度(因為不需要再做這些型別轉換)

然而,你可能看到更多的使用場合是把這個機制和LINQ的查詢回傳值混在一起,再回頭看前幾天介紹的LINQ語法:

'查詢BMI值大於25的人
Dim result = From c In matrix Where c.BmiValue > 25

從這邊你會看到透過查詢語法所回傳的值,也是透過這樣的機制來建立的。總的來說VB在語法上的更新,蠻多都實現在LINQ相關的應用上,這也是先前說過VB新語法與LINQ幾乎脫不了干係。

另外,由於有型別推斷,你可以在VB當中直接這麼寫:

你可以直接把XML以Copy Paste的方式貼到程式碼編輯區,然後定義一個變數來承接,由於具有型別推斷的功能,因此xmlData變數會被定義成xElement型別,寫起程式來方便多了。

1 則留言: