在 C# 2.0 中,类都必须通过 class 定义,有时候,特别是 LINQ 推出后,使用对象来传递值是很频繁的,而各对象的结构又随时不同,若要预先经过 class 定义,反而使程序复杂了,所以 C# 3.0 中,可以像 JavaScript 的 JSON 一样:
var doc = new { Title = "标题", Content = "内容", doc.CreatedOn, size }; Response.Write(doc.Title);
使用 var。
没有类型名称,new 后面空格加大括号。
大括号里面是属性和属性值配对,用“=”。
doc.CreatedOn 是 doc 的一个属性,这种情况下可以省略匿名类的属性名称。
size 是一个变量,这种情况下也可以省略匿名类的属性名称。
匿名类不能动态指定属性名,比如 Title 不能是变量。
匿名类不能后续添加属性,这是在 new 的时候就固定了。因为匿名类跟动态类是两回事,匿名类其实是指:一体化创建类和实例。有些人把二者搞混了。如果动态属性的目的,是想让自己的类能够被更广泛的场景调用,其实不用匿名类,而应该用泛型。
相关阅读