C# 匿名类型(Anonymous Types)

简介:
时代的变化真是快,今天看MVC程序的时候在Global.asax.cs文件里看到:
     routes.MapRoute(

         "Default",                                      // Route name

         "{controller}/{action}/{id}",                       // URL with parameters

          new { controller = "Home", action = "Index", id = "" }  // Parameter defaults

      );

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)
    class  Customer {

        public Customer(string s, int a) {

            this.Name = s;

            this.Age = a;

        }

        public string Name { getset; }

        public int Age { getset; }

    }

 

    class Program {

        static void Main(string[] args) {

            List<Customer> list = new List<Customer>();

            Customer c = new Customer("A", 20);

            list.Add(c);

            c = new Customer("B", 21);

            list.Add(c);

            c = new Customer("C", 22);

            list.Add(c);

            c = new Customer("D", 23);

            list.Add(c);

 

            var query=from customer in list

                      where customer.Name!="B"

                      select new {Name=customer.Name,Age=customer.Age};

            foreach(var q in query){

                Console.WriteLine("Name is:"+q.Name+" Age is:"+q.Age);

            }

        }

    }

 

更多信息请参考:
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



本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/195805,如需转载请自行联系原作者
目录
相关文章
|
Cloud Native Java 应用服务中间件
Docker容器实战【三】搭建Docker镜像私服Harbor
每个企业都有自己的镜像私服仓库,和nexus一样,公司内部的镜像制品都存放在自己的私服仓库中,今天我们来学习Harbor
1427 1
Docker容器实战【三】搭建Docker镜像私服Harbor
|
数据可视化 关系型数据库 MySQL
Apache Superset 1.2.0教程 (三)—— 图表功能详解
通过之前章节的学习,我们已经成功地安装了superset,并且连接mysql数据库,可视化了王者英雄的数据。使用的是最简单Table类型的图表,但是superset还支持非常多的图表类型。 本文我们将对各种图表类型进行逐一的演示,文章较长。
1335 0
Apache Superset 1.2.0教程 (三)—— 图表功能详解
|
搜索推荐
数据结构学习笔记——链表的相关知识(单链表带头结点和不带头结点的基本操作)(下)
数据结构学习笔记——链表的相关知识(单链表带头结点和不带头结点的基本操作)
数据结构学习笔记——链表的相关知识(单链表带头结点和不带头结点的基本操作)(下)
|
人工智能 边缘计算 算法
MindSpore安装教程
MindSpore安装教程
1506 0
MindSpore安装教程
|
运维 监控 安全
Quick BI产品核心功能大图(六)开放集成:Quick BI+,激发业务新价值
企业想要拥有领先的数据分析能力,自研往往需要投入巨大的人力和财力。 Quick BI作为唯一一个连续两年入选Gartner魔力象限的中国BI产品,具备强大的全链路开放集成能力,可以轻松的与企业原有系统匹配融合,帮助企业快速构建起强大好用的数据分析平台!
Quick BI产品核心功能大图(六)开放集成:Quick BI+,激发业务新价值
|
Java 应用服务中间件 API
05、logback(日志实现框架)(二)
05、logback(日志实现框架)(二)
05、logback(日志实现框架)(二)
|
NoSQL 算法 Java
Redis进阶 - 数据结构:对象机制详解,一文深入底层分析
我们在前文已经阐述了Redis 5种基础数据类型详解,分别是字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(zset),以及5.0版本中Redis Stream结构详解;那么这些基础类型的底层是如何实现的呢?Redis的每种对象其实都由对象结构(redisObject) 与 对应编码的数据结构组合而成, 本文主要介绍对象结构(redisObject) 部分。
Redis进阶 - 数据结构:对象机制详解,一文深入底层分析
|
XML JavaScript 数据格式
krpano动态加载设置热点
上一张中已经完成了比较简易的3D全景浏览,但是...这是写死在xml中的,对于我们实际的项目,这种情况是不可能适应的。所以,来了解下如何动态加载xml已经设置对应的热点。
krpano动态加载设置热点
|
编解码 数据挖掘 ice
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集
927 0
Google Earth Engine ——数据全解析专辑(COPERNICUS/S2_SR)20154至今哨兵-2号(SR) 数据集