当你尝试编译时:
var car = new { "toyota", 5000 };
您将收到编译器错误“无效的匿名类型成员声明符。必须使用成员分配,简单名称或成员访问来声明匿名类型成员。”因为编译器无法推断出各个表达式的属性名称。 这完全有道理。
让我感到好奇的是,错误消息暗示了声明类型成员的三种有效方式。成员分配和成员访问是显而易见的:
// member assignment
var v = new { Amount = 108, Message = "Hello" };
// member access
var productQuery =
from prod in products
select new { prod.Color, prod.Price };
使用简单名称声明的示例是什么?
谷歌搜索和SO上的相关问题仅导致成员分配和成员访问的示例。
答案 0 :(得分:13)
据我所知,simple name
声明是这样的:
var amount = 10;
var whatever = "hello";
var newType = { amount, whatever }
将自动创建一个等于的匿名类型:
var newType = { amount = amount, whatever = whatever }