首先说明下,我一般很少用dynamic关键字(类)的,因为毕竟是由反射实现的,所以对于性能方面还是吃亏不少(注:由于心里没底,查了一些资料得知,dynamic实质上好像不是由反射实现的,其性能也比直接反射要高不少,至于为什么,我也不明白,希望你们知道的能留言告诉我一下!谢谢啦 ^_^)我也不知道为什么DLR能够实现与反射一样的实现,但代码,性能要比后者简介,高效!!

  我这里就纯粹在这里坐下记录

  1. 匿名对象(类型)传参的几种方式

  代码如下:

  class Program

  {
    static void Main(string[] args)
    {
      int[] array = new int[]{
      3,4,5,6,7,8,9
      };
    var data = from r in array
      where r == 8
      select new
      {
        ID = r
      };
    GetNumber(data);

    GetNumber1(data.First());  //直接转成一个匿名类
    }
    static void GetNumber(dynamic data)
    {
      Console.WriteLine(dy.First().ID);  //报错,因为dy传过来之后不识别First()这个Linq下的拓展方法
      Console.ReadLine();
    }

    static void GetNumber1(dynamic data)
    {
      Console.WriteLine(dy.ID);  //正确
      Console.ReadLine();
    }

    static void GetNumber2(dynamic data)
    {

      //强转dynamic对象

      IEnumerable<dynamic> dy = data;
      Console.WriteLine(dy.First().ID);  //正确,能正确识别Linq下的First()
      Console.ReadLine();
    }

}

  总结:1. 动态对象不支持拓展方法

2. 匿名函数(Lambda表达式)不能用作动态方法调用的参数,故Linq不用用于动态对象

              3. 能避免用dynamic就避免使用,但是有些情况,还是可以使用的(比如能大幅度缩减代码量,提高代码清晰度,代码结构分明等好处),有时候那么点性能也不是那么重要 ^_^

  OVER!!! 睡觉 

转载于:https://www.cnblogs.com/ms27946/p/4976330.html

dynamic结合匿名类型 匿名对象传参相关推荐

  1. mybatis多对一,一对一,多对多resultMap映射,pojo映射,传参集合,封装的对象传参

    普通映射: <!-- 使用resultMap解决列名和属性名不一致的情况 --><!-- 配置一个resultMap映射列和属性 --><resultMap type=& ...

  2. c++ 计算长方形面积 类对象传参

    c++ 计算长方形面积 类对象传参 题目 问题描述 问题分析 设计思想 设计表示 源代码 测试数据及运行结果 题目 编写一个程序计算两个给定长方形的面积,其中在设计类成员函数addarea()(用于计 ...

  3. springmvc 对象传参

    springmvc 对象传参 第一种情况 public class User implements Serializable {private Integer id;private String na ...

  4. php值传参,引用传参以及对象传参

    传值:是把实参的值赋值给行参 ,那么对行参的修改,不会影响实参的值 传引用 :真正的以地址的方式传递参数传递以后,行参和实参都是同一个对象,只是他们名字不同而已对行参的修改将影响实参的值 说明: 传值 ...

  5. C++ 类模板对象传参方式

    #include <iostream> #include <string> using namespace std;/***************************** ...

  6. DWR第四篇之对象传参

    1. 本示例在第一篇架构基础上添加代码 2. 首先,在dwr.xml文件里添加对象转换器 3. 编写Person实体类 1 package com.skyer.vo; 2 3 import java. ...

  7. 微软免费图书《Introducing Microsoft LINQ》翻译Chapter2.1:C# 3.0 特性(对象初始化表达式\匿名类型\查询表达式)...

    本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理. 允许转载,但转载时请注明本版权声明信息,禁止用于商业用途! 博客园:韩现龙 Introducin ...

  8. C#编程(十六)----------匿名类型

    匿名类型 var和new关键字一起使用,可以创建匿名类型. 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用 ...

  9. 4.Ling初体验 匿名类型在查询表达式中的使用

    定义:  匿名类型是指包括一个或多个公共属性的类类型, 它提供了将查询结果临时组合在一起的捷径,从而不需要为每个查询结果集合指定一个有名称了类型. 在LINQ中,匿名类型广泛使用与查询表达式中的sel ...

最新文章

  1. 服务器的操作系统分哪几类,服务器的操作系统分哪几类
  2. 索引,表增删改统计,加锁查具体情况(推荐)
  3. centos7.3安装nodejs
  4. 10个精选的颜色选择器Javascript脚本及其jQuery插件
  5. 如何提升你的代码能力?
  6. linux 共享移动硬盘,随时登陆上QQ 自带Linux移动硬盘实战
  7. vins-mono中在rviz可视化下如何在world坐标系中让视角跟着相机移动
  8. seaborn常用速查手册
  9. 浅谈长尾理论--《Makers》读后感
  10. 烂泥:使KVM显示VM的IP地址及主机名
  11. 论文笔记_S2D.16-2016-3DV-利用全卷积残差网络进行深度预测
  12. 解决从PDF复制到Word中的英文字母变成宋体格式的问题
  13. proteus 直流可调稳压电源
  14. 华为C语言编程规范(整理)
  15. 《人生七年》-------殊途同归
  16. JS十六进制转浮点、字符串转为ArrayBuffer、ArrayBuffer转16进制字符串、16进制转10进制、crc校验位、十六进制转中文字符串(小程序、浏览器)、十六进制字符串转ascall字串
  17. Object.entries()
  18. 如何安装打印机驱动程序?快速安装的方法
  19. 10个超赞的HTML5框架加快Web开发
  20. Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulators学习笔记

热门文章

  1. sql出现列名无效的原因_SQL数据库中的数据类型与表结构的创建
  2. 计算机基础知识必刷,《2019年江苏专转本考试-计算机基础必刷题题库(第四章)》...
  3. bigdecimal java 最大值_Java中的数学运算BigDecimal
  4. 兰州大学第一届『飞马杯』程序设计竞赛(同步赛),签到题ACFHJ
  5. 【PAT乙】1044 火星数字 (20分)
  6. linux文件移动到hdfs,解决从linux本地文件系统上传文件到HDFS时的权限问题
  7. oracle alert.log查找,oracle alert.log位置
  8. java中 運算符,Java中的運算符
  9. Python入门--获取指定目录下的所有.py文件
  10. java mapreduce示例,hadoop入门-MapReduce实例(一)