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
[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
相关文章推荐
- 步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- 步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- 步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- C# 3.0新特性之QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- 4、步步为营VS 2008 + .NET 3.5(4) - C# 3.0新特性之LambdaExpressions(Lambda表达式)、QuerySyntax(查询语法)和AnonymousTypes(匿名类型)
- C#3.0 匿名类型(Anonymous Types)
- 匿名类型 Anonymous Types
- 匿名类型(Anonymous Types)
- ASP.NET3.5——匿名类型(Anonymous Types)
- C#:匿名类型
- C# 3.0 新特性 学习(二):匿名类型、扩展方法
- C#超级有用的一种类型—匿名类型
- C#匿名类型
- 实例 C#3.0与C#2.0相比之新特性(三)---匿名类型 匿名变量
- C#==>匿名类型
- C# 3.0新特性初步研究 Part5:匿名类型_C#教程
- C# 3.0 新特性 学习(二):匿名类型、扩展方法
- 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
- [C# 3.0] 传递匿名类型对象的问题 (转)
- C#匿名类型及Lambda方法