• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C# Dynamic关键字之:解析dynamic就是Object

C# Dynamic关键字之:解析dynamic就是Object

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#dynamic,c#中dynamic,dynamicobject,c dynamicobject,dynamic等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
C# 4.0提供了一个dynamic 关键字,那么什么是dynamic,究竟dynamic是如何工作的呢?

从最简单的示例开始:

image

可以看到对于表达式 obj +3 ,编译器器报告了错误,但是不会报 dyn+3 编译。

编译器不会检查包含dyn的表达式,原因在于 dyn 是 dynamic。

 

类型转换

修改Main代码如下:

dynamic dyn = (dynamic)1;

int j = (int)dyn;

可以看到1被强制转换成dynamic,然后又被强制转换回int.

然而dynamic可以隐式的转换成任何类型,并且也可以从其他类型中转换回来,

所以上面的代码和下面的等价:

dynamic dyn = 1;

int j = dyn;

修改Main代码增加如下代码:

//下面这句话会无法通过编译,typeof 运算符无法用在动态类型上

//Console.WriteLine(typeof(dynamic));

Console.WriteLine(typeof(List<dynamic>));

如果你是typeof(dynamic)会报typeof运算符无法用在动态类型上的错误,

但是如果你写的是List<dynamic> 那么输出结果如下:

image 

可以看到输出时System.Object。

微软对此的解释是:

在大多数情况下, dynamic 类型与 object 类型的行为是一样的。 但是,不会用编译器对包含 dynamic 类型表达式的操作进行解析或类型检查。 编译器将有关该操作信息打包在一起,并且该信息以后用于计算运行时操作。在此过程中,类型 dynamic 的变量会编译到类型 object 的变量中。 因此,类型 dynamic 只在编译时存在,在运行时则不存在。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中Dynamic和Dictionary性能比较
  • C#中dynamic关键字的正确用法(推荐)
  • 深入C# 4.0 新特性dynamic、可选参数、命名参数的详细介绍
  • C# Dynamic关键字之:dynamic为什么比反射快的详解
  • C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的应用(下)
  • C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的应用(上)
  • C# Dynamic关键字之:调用属性、方法、字段的实现方法
  • C# Dynamic关键字之:解析dynamic就是Object
  • C# dynamic关键字的使用方法

相关文章

  • 2017-05-28C#窗体编程不显示最小化、最大化、关闭按钮的方法
  • 2017-05-28浅谈static a[n*m]={0};中static的作用
  • 2017-05-28C#在DataTable中根据条件删除某一行的实现方法
  • 2017-05-28C# 向Word中设置/更改文本方向的方法(两种)
  • 2017-05-28从C#程序中调用非受管DLLs的方法
  • 2017-05-28C#递归算法之打靶算法分析
  • 2017-05-28C# 装箱和拆箱的知识回顾
  • 2017-05-28C#中datatable去重的方法
  • 2017-05-28C#正则表达式的递归匹配分析
  • 2017-05-28C#实现导出List数据到xml文件的方法【附demo源码下载】

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C# .net实现货币转换示例
    • C#连接Excel驱动与示例代码分享
    • C#由当前日期计算相应的周一和周日的实例代码
    • c#各种Timer类的区别与用法介绍
    • C#中Response.Write常见问题汇总
    • C#实现将记事本中的代码编译成可执行文件的方法
    • 关于C#程序优化的五十种方法
    • C#模拟MSN窗体抖动的实现代码
    • C#使用foreach语句遍历集合类型的方法
    • c#用for语句输出一个三角形的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有