1
var products1 = new List<Product> {
     new Product { Name = "Apple", Price = 2 }};

var products2 = from product in products1
      select new { product.Name, product.Price };

foreach (var p in products1) 
      Console.WriteLine(p);

foreach (var p in products2)
      Console.WriteLine(p);

2番目のものが「{Name=Apple、Price = 2}」と出力するのはなぜですか?

4

3 に答える 3

3

2 番目に「{ Name = Apple, Price = 2 }」と表示されるのはなぜですか?

キーワードを使用して匿名型を作成したため、型newと同じではありませんProduct

あなたが呼び出すので、Console.WriteLine(p);それは次と同等です:

Console.WriteLine(p.ToString());

以下を参照してください: C#/.NET リトル ワンダー: 匿名型の喜び

匿名型の ToString()

匿名型が提供するより簡単なオーバーライドの 1 つは、匿名型インスタンスの値を、初期化されたときとほぼ同じ形式で出力する ToString() メソッドです(もちろん、必要に応じて式ではなく実際の値を除きます)。

于 2013-02-19T09:06:25.933 に答える
2

独自のToStringメソッドを実装する匿名型を作成しています。

于 2013-02-19T09:06:25.137 に答える
1

これは LINQ ではなく、C# コンパイラToStringが匿名型を生成する方法です。

于 2013-02-19T09:06:37.910 に答える