1

私がこれにぶつかったとき、私はMVCチュートリアルを経験していました:

public ActionResult Index()
{
    dynamic genres = new List<Genre> {
        new Genre { Name = "Disco" },
        new Genre { Name = "Jazz" },
        new Genre { Name = "Rock" }
    };
    return View(genres);
}

Genre.Add("Disco");代わりに...を使用した場合の違いは何ですか。ありがとう。

4

3 に答える 3

3

dynamic正直なところ、なぜここで最初に使用しているのかは明確ではありません。しかし、あなたが使用した場合

List<Genre> genres = new List<Genre>();
genres.Add(new Genre { Name = "Disco" });
genres.Add(new Genre { Name = "Jazz" });
genres.Add(new Genre { Name = "Rock" });

同じ効果があります。

genres.Addではなく、であることに注意してくださいGenre.Add

また、名前を使用してジャンルコンストラクターを作成すると、コードが簡単になることをお勧めします。または、名前の部分を明示的にしたい場合は、Genre.FromName静的メソッドを作成できます。

于 2012-07-27T08:25:32.227 に答える
3

どちらも投稿されていない、変数の静的メソッドまたはインスタンスメソッドのように、それとgenres.AddList<T>.Addメソッド)の違いを意味していると思います。Genre.AddGenreGenre

最終的なコードには動作上の違いはなく、視覚的な違いにすぎません。

なぜ使用しているのかdynamic(おそらく探しているのvarか?)はわかりませんが、違いは、これがコレクション初期化構文.Addと呼ばれることです。基本的には、手動で呼び出すよりも重要です。

var genres = new List<Genre> {
    new Genre { Name = "Disco" },
    new Genre { Name = "Jazz" },
    new Genre { Name = "Rock" }
};

と同等です:

var genres = new List<Genre>();
genres.Add(new Genre { Name = "Disco" });
genres.Add(new Genre { Name = "Jazz" });
genres.Add(new Genre { Name = "Rock" });

コンパイラ.Addはあなたの場合にあなたのためにを出力します。

C#で新しいList <string>を作成するこれらの3つの方法の違いは何ですか?

また、あなたの例では、次のようなオブジェクト初期化構文が表示されています。

new Genre { Name = "Disco" }

これは次のようになります。

var g = new Genre();
g.Name = "Disco";
于 2012-07-27T08:25:40.347 に答える
1

コンパイルされた用語ではありません。それは実際にはシンタックスシュガーです

dynamic genres = new List<Genre();
genres.Add(new Genre...

説明されていないので、これはあなたが意味したと私が思うものですGenre.Add(string)

于 2012-07-27T08:25:10.160 に答える