动态类型var和dynamic和传统确定类型区别和效率

简介:

   伴随着vs2010的出现,c#4.0的诞生,与之而来的动态类型dynamic更是给net程序员们锦上添花,为自己的程序书写上带来了给大的便利。可到底怎么用,好不好用,效率这么样,也许是大家最迫切关注的,msdn虽然有简介和使用方法但效率问题才是是否实用的衡量标准和使用前提,本文将为您揭开谜底。

    一、var、dynamic简介。

    二var、dynamic区别。

    三var、dynamic、传统确定类型的效率对比。

一、var、dynamic简介

1.var简介:动态推断类型,net framework 3.5新出的一个定义变量的类型,其实也就是弱化类型的定义,在代码转移时候确定类型。

    msdn参考:[http://msdn.microsoft.com/zh-cn/library/bb383973.aspx]

    百度百科参考:[http://baike.baidu.com/view/407694.htm]

2.dynamic简介:动态类型,net framework 4.0新出的一个定义变量的类型,在代码运行的时候确定类型。

     msdn参考:[http://msdn.microsoft.com/zh-cn/library/dd264741.aspx]

var、dynamic区别。


var、dynamic区别:

    1.var程序编译时确定类型、dynamic程序运行时确定类型。

    2.var 只能定义局部变量;dynamic可定义局部变量和类变量。

    ....

var、dynamic、传统确定类型的效率对比。

    var、dynamic、传统确定强类型究竟谁能称王,成为武林中的霸主,下面通过本人的代码和运行结果已见分晓。

    代码思路,执行同样的操作,给一个StudentInfo类赋值和打印100000次,有计时器查看运行的时间,代码如下:

    

ContractedBlock.gif View Code

执行结果:2011021715215016.jpg

多次执行的结论:传统类型 效率 >= var 动态推断类型 > dynamic动态类型 





本文转自王磊的博客博客园博客,原文链接:http://www.cnblogs.com/vipstone/archive/2011/02/17/1957014.html,如需转载请自行联系原作者



目录
相关文章
|
5月前
|
存储 C# 容器
C变量数据类型深度解析:打造高效代码的基石
C变量数据类型深度解析:打造高效代码的基石
37 1
|
2月前
|
编译器 Go 开发者
Go 在编译时评估隐式类型的优点详解
【8月更文挑战第31天】
26 0
|
3月前
|
JavaScript 前端开发 网络架构
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
JavaScript编码之路【对象的增强、ES6新特性之函数的默认值设置 、rest参数 (剩余参数)、拓展运算符、对象与数组的解构赋值】
52 1
|
4月前
|
存储 Python
Python成员属性的内存特性与底层内存优化方案
这篇博客主要分享一下python成员属性的内存特性,也就是python底层节约内存的优化方案
|
5月前
|
编译器 C#
C#.Net筑基-类型系统②常见类型 --record是什么类型?
`record`在C#中是一种创建简单、只读数据结构的方式,常用于轻量级数据传输。它本质上是类(默认)或结构体的快捷形式,包含自动生成的属性、`Equals`、`ToString`、解构赋值等方法。记录类型可以继承其他record或接口,但不继承普通类。支持使用`with`语句创建副本。例如,`public record User(string Name, int Age)`会被编译为包含属性、相等比较和`ToString()`等方法的类。记录类型提供了解构赋值和自定义实现,如密封的`sealed`记录,防止子类重写。
|
11月前
|
JavaScript 前端开发
如何把传统写法改成框架形式 es6
如何把传统写法改成框架形式 es6
46 0
|
JavaScript 前端开发 API
JavaScript 核心基础(类型、值和变量)
JavaScript 核心基础(类型、值和变量)
|
前端开发 程序员 C#
【C#】通过扩展对象的方式,对字符串等数据类型进行数据进一步处理
在本篇文章中,我们讲一起了解下对象扩展的使用 在实际项目开发中,对象扩展使用的场景还是挺多的,比如:需要对时间值进行再处理,或者字符串中的斜杠(/)转为反斜杠(\)
109 0
Runtime系列:super调用函数本质、isMemberOfClass与isKindOfClass的区别、综合分析【05】
Runtime系列:super调用函数本质、isMemberOfClass与isKindOfClass的区别、综合分析
126 0
Runtime系列:super调用函数本质、isMemberOfClass与isKindOfClass的区别、综合分析【05】