VS "15" 預覽 5 給 VB 帶來了更新。
這次的更新內容有3個:
* 值元組 ValueTuple
這個功能能把一組計算結果成組返回。
為了使用這個功能,我們要安裝 System.ValueTuple 包。這是測試版的包,並且之前只仔細測試過 C# 的值元組功能。
裝上之後,定義一個簡單的函數
VB
Function TupleTest() As (Integer, b As String) Return (1, 2) End Function
這個函數的返回值包含了兩個私有字段,三個公共屬性。
成員用來放這兩個值,屬性分別是
Item1, Item2, b
其中,b與Item2指向同一個字段。
生成這樣的元組是因為第一個成員沒有名字,取默認名 Item1。第二個參數有名字,就是b。
至於Item2, 這個可能是Bug,也可能本來就是設計成在部分匿名元組裡面每個成員都有默認名稱。
目前的值元組不支持解構,也不完全支持Option Explicit Off。
* 二進制數字和數字分隔符
現在可以用 &B 定義一個二進制的數字。例如:
VB
Enum MouseState None = &B0 Left = &B1 Right = &B10 Middle = &B100 X1 = &B1000 X2 = &B1_0000 End Enum
是不是很方便呢?
* 支持使用 ByRef 返回類型
在C#中可以定義一個返回 ref 的方法或屬性。現在 VB 可以正常使用這種方法。例如:
C#
public ref double Items(int index) { return ref this._collection[index]; }
在VB中使用代碼
VB
Items(0)=2.5
可以正常地把_collection的第一個元素變為2.5。
我個人認為這個功能僅僅用於兼容c# 7.0的代碼。因為這個功能有寫法稍微麻煩一些的等效替代。完全可以把值取出來,然後復制回去,而不必創建一個引用。