C#3.0新特性之匿名类型

来源:互联网 发布:上海行知教育招聘 编辑:程序博客网 时间:2024/04/28 08:32

C#3.0允许将new和一个匿名对象初始化器一起来创建一个匿名类型的对象。具体语法格式为:

匿名对象创建表达式:

         new 匿名对象初始化器

 匿名对象初始化器:

         {成员声明器列表}

成员声明器列表:

         成员声明器

         成员声明器列表,成员声明器

 成员声明器:

         简单名称

         成员访问

         标识符=表达式(赋值表达式)

注:简单名称就是已经定义在当前范围可访问的标识符(变量名)。成员访问就是通过“.”分割的表达式。

实例:

           Rectangle r = new Rectangle() { P1 = { X = 5, Y = 6 }, P2 = { X = 7, Y = 8 } };

          //匿名类型包含NameP1两个只读成员

          var anyType = new { Name = "Hello, r.P1};  //r对象的成员访问

          //匿名类型包含ri两个只读成员

        var testType = new { r, i = 0 };//r对象简单名称

注意:

    1 匿名类型中的成员都是只读的。

    2 成员的类型根据赋值表达式来推导出实际类型(赋值表达式在编译时不能为null),

          不能在代码中指定成员类型。

    3 如果两个匿名类型创建表达式的成员变量名相同,并且经过推导出的变量的

          类型和顺序也相同,那么这两个匿名类型对象是两个同一匿名类型的实例,

    例如:

           var p1 = new { Name = "Lawnmower", Price = 495.00 };

           var p2 = new { Name = "Shovel", Price = 26.95 };

           p1 = p2;

原创粉丝点击