2015年11月18日水曜日

.NET(VB C#) オブジェクト初期化子、コレクション初期化子、匿名クラス

今年1年C#で書いてたら、来年からVBです。
VBでのLINQの書き方がわかりません。
LINQラブなのでVBでの書き方をまとめていきます。

まずはLINQを書く上ではずせない
オブジェクト初期化子、コレクション初期化子、匿名クラスについてVB、C#での書き方をまとめます。

まずはテスト用のクラスとして高級果物クラスです。

【C#】
private class Fruit
{
    public string Name { get; set; }
    public string Rank { get; set; }
    public decimal Price { get; set; }
}
【VB】
Private Class Fruit
    Public Property Name As String
    Public Property Rank As String
    Public Property Price As Decimal
End Class

オブジェクト初期化子


【C#】
Fruit fruit = new Fruit() { Name = "りんご", Rank = "A", Price = 1000 };
【VB】
Withキーワードを使用します。
※Withキーワード以降で改行しても「_(アンダーバー)」は不要です。(注1)
Dim fuit As New Fruit() With { .Name = "りんご", .Rank = "A", .Price = 1000 }

コレクション初期化子


【C#】
var fruits = new List<Fruit>()
     {
         new Fruit(){Name = "りんご", Rank = "A" , Price = 1000 },
         new Fruit(){Name = "みかん", Rank = "A" , Price = 600 },
         new Fruit(){Name = "ぶどう", Rank = "B" , Price = 1200 },
         new Fruit(){Name = "りんご", Rank = "B" , Price = 800 },
         new Fruit(){Name = "みかん", Rank = "A" , Price = 500 }

     };
【VB】
Fromキーワードを使用します。
※Fromキーワード以降で改行しても「_(アンダーバー)」は不要です。(注1)
Dim fruits = New List(Of Fruit)() From
     {
         New Fruit() With {.Name = "りんご", .Rank = "A", .Price = 1000},
         New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 600},
         New Fruit() With {.Name = "ぶどう", .Rank = "B", .Price = 1200},
         New Fruit() With {.Name = "りんご", .Rank = "B", .Price = 800},
         New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 500}
     }

匿名クラス


【C#】
dynamic myfruit = new { Name = "金のりんご", Rank = "AAA", Price = 9999999999 };
【VB】
Withキーワードを使用します。
Dim myfruit = New With {.Name = "金のりんご", .Rank = "AAA", .Price = 9999999999}

注1
VBで改行「_(アンダーバー)」がVS2010より条件により省略できるようになりました。
省略できる条件はコチラ
Visual Basic 2010 の新機能 暗黙の行継続


C#の方がわかり易い。書き易い。
VB11年。C#1年。
C#のほうがイイなぁ・・・

0 件のコメント: