有时候你可能需要定义类来封装一些数据,但并不需要任何方法、事件和其他自定义的功能。或者说你需要定义一个只是用于当前程序的临时类型,在这种情况下,匿名类型将会派上用场。请看下面的代码:

using System;

namespace Com.LoonStudio {

	class Program {
		static void Main() {
			// 定义匿名类型
			var car1 = new { Brand = "Benz", MaxSpeed = 200 };
			var car2 = new { Brand = "Benz", MaxSpeed = 200 };
			Console.WriteLine(car1.Equals(car2));	// true(基于值的语义进行比较)
			Console.WriteLine(car1 == car2);		// false
			Console.WriteLine(car1.GetType() == car2.GetType());	// true
			Console.WriteLine(car1.GetType().Name);	// <>f__AnonymouseType0`2
			Console.WriteLine(car1.ToString());		// { Brand = Benz, MaxSpeed = 200 }

			// 包含匿名类型的匿名类型
			var person = new {
						Name = "Hao", RegDate = DateTime.Now, 
						Car = new {Brand = "Benz", MaxSpeed = 200}
			};
			Console.WriteLine(person.Car.Brand);	// Benz
			Console.WriteLine(person);	// { Name = Hao, RegDate = 2013/12/6 23:12:17, Car = { Brand = Benz, MaxSpeed = 200 } }
		}
	}
}