您的位置:首页 > 编程语言 > C#

C# 匿名类型(Anonymous Types)

2009-08-26 01:15 531 查看
时代的变化真是快,今天看MVC程序的时候在Global.asax.cs文件里看到:
[align=left] routes.MapRoute([/align]
[align=left] "Default", // Route name[/align]
[align=left] "{controller}/{action}/{id}", // URL with parameters[/align]
[align=left] new { controller = "Home", action = "Index", id = "" } // Parameter defaults[/align]
);
What the...
new { controller = "Home", action = "Index", id = "" } ???
这是什么代码阿,一时大脑空白。C# 的语法变成这样了, 又一次感悟到自己落后了,落后到连代码也看不明白了。

这是 .NET 3.0 里添加的 匿名类型(Anonymous Types),比如:
var a = new { controller = "Home", action = "Index", id = "" };
1. 这是class types
2. 里面的属性只读(read-only)

使用Anonymous Types (最常用在LINQ里)
[align=left] class Customer {[/align]
[align=left] public Customer(string s, int a) {[/align]
[align=left] this.Name = s;[/align]
[align=left] this.Age = a;[/align]
[align=left] }[/align]
[align=left] public string Name { get; set; }[/align]
[align=left] public int Age { get; set; }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class Program {[/align]
[align=left] static void Main(string[] args) {[/align]
[align=left] List<Customer> list = new List<Customer>();[/align]
[align=left] Customer c = new Customer("A", 20);[/align]
[align=left] list.Add(c);[/align]
[align=left] c = new Customer("B", 21);[/align]
[align=left] list.Add(c);[/align]
[align=left] c = new Customer("C", 22);[/align]
[align=left] list.Add(c);[/align]
[align=left] c = new Customer("D", 23);[/align]
[align=left] list.Add(c);[/align]
[align=left] [/align]
[align=left] var query=from customer in list[/align]
[align=left] where customer.Name!="B"[/align]
[align=left] select new {Name=customer.Name,Age=customer.Age};[/align]
[align=left] foreach(var q in query){[/align]
[align=left] Console.WriteLine("Name is:"+q.Name+" Age is:"+q.Age);[/align]
[align=left] }[/align]
[align=left] }[/align]
}

更多信息请参考: http://msdn.microsoft.com/en-us/library/bb397696.aspx http://blogs.msdn.com/charlie/archive/2007/09/26/choosing-not-to-use-anonymous-types-in-query-expressions.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息