31

誰かがこのコードの理由を説明できますか:

var marketValueData = new[] {
    new { A = "" },
    new { A = "" },
    new { B = "" },
};

エラーが表示されます:

暗黙的に型指定された配列に最適な型が見つかりません

これは完全に正常に動作しますが:

var marketValueData = new[] {
    new { A = "" },
    new { A = "" },
    new { A = "" },
};

異なるプロパティ (B最初の例の最後のエントリ) を除けば、それらは同じです。しかし、最初のものはコンパイルされていません。なんで?

4

5 に答える 5

36

これは、最初の例に 2 つの異なる匿名型があるためです。最後の項目の定義が他の項目とは異なります。

最初の例では、Aプロパティを含むものとプロパティを含むものがありBますが、コンパイラは配列の型を判断できません。2 番目の例では、 のみを含む 1 つの匿名型がありAます。

タイプミスだと思うので、最初の例の最後のエントリにB変更できますA

MSDNから:

配列インスタンスの型が配列初期化子で指定された要素から推測される、暗黙的に型指定された配列を作成できます。

于 2013-10-23T07:25:58.703 に答える
35

以下を使用できます。

var marketValueData = new object[] {
    new { A = "" },
    new { A = "" },
    new { B = "" },
    ...,
};
于 2015-12-19T08:38:34.973 に答える