意味は異なるが、型推論の導入により、C#.NET と VB.NET で同じような構文で書けるようになった。
ただ、Dim の方が複数宣言できるので便利。元々、複数宣言可能だったのが、型推論でさらに便利になったというか。
対してvarは複数宣言不可。
理由は、「var val1=1, val2=1.0;」などの場合に型が1つに推測できないから?
複数の型が推測される場合は複数行に展開してくれたら便利だよね・・・
どちらを使うかは好みの問題(生成されるMSILは同じ)だが、クラスのメンバ変数の場合は「As New」しか使えない。
※「As New」は、メンバ変数宣言でも使える省略記法であり、C# より便利な点。
ただ、Dim の方が複数宣言できるので便利。元々、複数宣言可能だったのが、型推論でさらに便利になったというか。
対してvarは複数宣言不可。
理由は、「var val1=1, val2=1.0;」などの場合に型が1つに推測できないから?
複数の型が推測される場合は複数行に展開してくれたら便利だよね・・・
- Dim (VB.NET)
'[Option Infer On]設定
Dim num = 1 'Integer型
Dim text = "1" 'String型
'複数宣言可能
Dim val1 = 1, val2 = 2, val3 = "1"
- var (C#.NET)
var num = 1; //int型
var text = "1" //string型
//複数宣言 → コンパイル不可
var val1 = 1, val2 = 2;
Dim の変数宣言+New
Dim に型推論機能が追加されて、変数宣言+Newの省略記法が増えた。どちらを使うかは好みの問題(生成されるMSILは同じ)だが、クラスのメンバ変数の場合は「As New」しか使えない。
※「As New」は、メンバ変数宣言でも使える省略記法であり、C# より便利な点。
Private Sub Test
'今までの方法「As New」
Dim hoge1 As New Hoge()
'型推論「= New」 ※[Option Infer On]設定
Dim hoge2 = New Hoge()
End Sub
'メンバ変数で使用可能 (実質、型が省略できる)
Private _hoge1 As New Hoge()
'コンパイル不可(メンバ変数は型推論不可)
Private _hoge2 = New Hoge()
0 件のコメント:
コメントを投稿