これは、Visual Basic Advent Calendar 2014の12/11日の記事。
VB2015(VB14.0)の新機能として下記9項目を挙げたのですが、幾つかの機能については次のVB15.0以降になるようです。
やはり、この時点でVisual Studio 2015 Preview版に実装されていないのは持ち越しのようです。
.NET Compiler Platform ("Roslyn") のサイトにて「Added」の項目は追加されています。
【VB2015(VB14.0)の新機能】参照:VBの新しいステートメント、Upcoming Features in Visual Basic
1.Select Caseステートメントの拡張 → 次バージョンにて実装予定
2.読み取り専用の自動実装プロパティー
3.複数行にまたがった文字リテラル
4.yyyy-MM-dd型の日付リテラル
5.バイナリーリテラル
6.数値区切りリテラル
7.複数行にまたがるステートメントに対するコメント
8.バグ修正と小さな変更
9.C# Previewの変更で検討中の機能
10.その他
2.読み取り専用の自動実装プロパティーについて説明します。
この機能はVisual Studio 2015 Preview版を確認できました。
もともとC#では実装されていた機能なのですが、VBには実装されていませんでした。
簡単にプロパティー実装の経緯から説明します。
VB2008までのプロパティ実装の例
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
VB2010の自動実装プロパティの例
Public Property Name As String
このようにVB2010では、Propertyキーワードによりシンプルに宣言出来るようになりました。
このときVBコンパイラは、「_Name」というアンダーバー+プロパティ名のPrivate変数に展開します。
このPrivate変数を「バッキングフィールド」と呼びます。
これまでも変数を宣言する際に、ReadOnlyキーワードをつけることによって読み取り専用変数を宣言することが出来たのですが、プロパティにはついては、悲しいかなReadOnlyキーワードを付けるとコンパイルエラーになっておりました。
ちなみに、C#で読み取り専用プロパティは、public string Name {get; private set; } とします。
VB2015ではプロパティをReadOnlyキーワードをつけて読み取り専用にでき、またコンストラクタでその値をセットできるようになっています。
Class Sample
ReadOnly Property p As Integer = 15
ReadOnly Property q As Integer
Sub New(q As Integer)
_q = q
End Sub
End Class
Sub Main()
Dim hoge As New Sample(1)
Debug.Print(hoge.p.ToString) ’15
Debug.Print(hoge.q.ToString) ’1
End Sub