全文点击此处
C#4.0入门■ dynamic类型与匿名类型
    匿名类型是指没有名字,也没有单独定义的类型。严格说来,该类型还是有名字的,只是在C#的源代码中我们看不到这个名字。但是,在4.0版本之前,匿名类型可以被有效利用的范围并不是很大。因为要想在一个方法之外要利用匿名类型并不是不可能的,但是要想在方法之外利用匿名类型,就一定要使用反射。    但是,dynamic类型把这个问题很容易地就给解决了。如果作为dynamic类型来返回,访问它的内容就很简单了。访问使用dynamic类型与匿名类型的对象 
using System;
class Program
{
  private static dynamic GetObject()
  {
    return new { YourName = "亚洲队", YourScore = 1000 };
  }
  static void Main(string[] args)
  {
    dynamic a = GetObject();
    Console.WriteLine("{0}的分数为{1}分。",
                            a.YourName, a.YourScore);
  }
}上例的执行结果 
亚洲队的分数为1000分。    当然,因为在C#中该类型没有被单独定义,所以即使写错了要访问成员的名字,也不会引起编译错误,而是在运行时抛出异常。■ dynamic总结
    把dynamic总结的内容进行总结一下。
    ● dynamic类型为运行时才解释的类型。
    ● 可以访问编译时不知道类型的对象的信息。
    ● 只要名字保持一致,可以统一访问任何类型,哪怕不知道类型的对象信息。
    ● 使匿名类型的使用变得更容易。
    ● 拼错要访问成员的名字不会产生编译错误,而是运行时抛出异常。
    ● 虽然不知道类型也可以访问对象,但是会以少量性能为代价。    不能绝对地说dynamic类型是把不可能变成可能的类型。在这之前,使用反射也可以实现相同功能,dynamic类型只是使这一切变得更加简单容易了。    如果对于它会影响性能这一点很介意的话,也有相应的对策,就是采用并行。同时并灵活地使用系统资源,可以有效地把性能上的不利方面减少到最低限度。我们在下一章对此进行介绍。