1

ASP MVC 3ミュージックストアのチュートリアルを完了するときに、C#のページをVBに変換しようとしています。http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-4

このページは、DBに取り込まれる一連のサンプルデータです。

私が翻訳しようとしているC#は次のようになります。

        new List<Album>  
        {
            new Album { Title = "A Copland Celebration, Vol. I", Genre = genres.Single(g => g.Name == "Classical"), Price = 8.99M, Artist = artists.Single(a => a.Name == "Aaron Copland & London Symphony Orchestra"), AlbumArtUrl = "/Content/Images/placeholder.gif" },

         //lots of albums here... just like examples above and below

            new Album { Title = "Ao Vivo [IMPORT]", Genre = genres.Single(g => g.Name == "Latin"), Price = 8.99M, Artist = artists.Single(a => a.Name == "Zeca Pagodinho"), AlbumArtUrl = "/Content/Images/placeholder.gif" },
        }.ForEach(a => context.Albums.Add(a));

変換されたVBコードは次のようになりますが、コンパイラは最初の行に構文エラーがあると言っています...

New List(Of Album)() With { _             //Compiler says there is a syntax error here
            New Album() With { _
                 .Title = "A Copland Celebration, Vol. I", _
                 .Genre = genres.[Single](Function(g) g.Name = "Classical"), _
                 .Price = 8.99D, _
                 .Artist = artists.[Single](Function(a) a.Name = "Aaron Copland & London Symphony Orchestra"), _
                 .AlbumArtUrl = "/Content/Images/placeholder.gif" _
            }, _

       //lots of albums here 

            New Album() With { _
                .Title = "Ao Vivo [IMPORT]", _
                 .Genre = genres.[Single](Function(g) g.Name = "Latin"), _
                 .Price = 8.99D, _
                 .Artist = artists.[Single](Function(a) a.Name = "Zeca Pagodinho"), _
                 .AlbumArtUrl = "/Content/Images/placeholder.gif" _
             } _
}.ForEach(Function(a) context.Albums.Add(a))

構文エラーを修正するにはどうすればよいですか?

4

2 に答える 2

2

コンストラクトの周りには(少なくとも)括弧Callが必要です。また、(少なくとも以前のVBバージョンでは必要でしたが、VB10でまだ必要な場合は必要ありません)。さらに、Withリスト後のコンストラクターFrom(ただし、他のコンストラクターの後に必要です):

Call (New List(Of Album) From { _
    …
}).ForEach(…)

さらに、ではなく、ForEachが必要です。(ちなみに、VB10では行継続アンダースコアは冗長です。)SubFunction

しかし、VBとC#の両方で、これはひどく厄介なコードです。ForEachイニシャライザーでオブジェクトに式を割り当て、そのオブジェクトを呼び出すだけです

于 2012-08-09T15:44:27.007 に答える
2

With私には、余分な中かっこのセットが追加されているように見えます。構文は次のようになります。

 New List(Of SomeThing)(
     {
     New SomeThing With {.name = "foo"}, 
     New SomeThing With {.name = "bar"}
     }
 )

したがって、例は次のようになります。

    Dim a As New List(Of Album)({
          New Album() With {.Title = "A Copland Celebration, Vol. I"},
          New Album() With {.Title = "Ao Vivo [IMPORT]"}})

しかし、私はコンラッドに同意します-このコードはひどいです!

于 2012-08-09T15:50:45.490 に答える