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

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

    伴随着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次,有计时器查看运行的时间,代码如下:

    

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif View Code
 
  
Stopwatch s1 = new Stopwatch();
s1.Start();
for ( int i = 0 ; i < 100000 ; i ++ )
{
var stu
= new StudentInfo();
stu.Name
= " a " ;
stu.Age
= " abc " ;
}
s1.Stop();
Response.Write(
" 1.var动态推断类型: " + s1.ElapsedMilliseconds + " <br /> " );

Stopwatch s2
= new Stopwatch();
s2.Start();
for ( int i = 0 ; i < 100000 ; i ++ )
{
dynamic stu
= new StudentInfo();
stu.Name
= " a " ;
stu.Age
= " abc " ;
}
s2.Stop();
Response.Write(
" 2.dynamic动态类型: " + s2.ElapsedMilliseconds + " <br /> " );

Stopwatch s3
= new Stopwatch();
s3.Start();
for ( int i = 0 ; i < 100000 ; i ++ )
{
StudentInfo stu
= new StudentInfo();
stu.Name
= " a " ;
stu.Age
= " abc " ;
}
s3.Stop();
Response.Write(
" 3.传统确定强类型: " + s3.ElapsedMilliseconds + " <br /> " );

执行结果:img_7d147d0eeebefee9f62785ab9fb9daf4.jpe

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

[原创地址:http://www.cnblogs.com/stone_w/archive/2011/02/17/1957014.html]

img_fa0be433d68c8212b2b0b3b1a564ccb1.png
如果本文对你有所帮助,请打赏——1元就足够感动我:)
支付宝打赏 微信打赏
联系邮箱:intdb@qq.com
我的GitHub: https://github.com/vipstone
关注公众号: img_9bde0f31ac4a0eca10b1bd7414b78faf.png


作者: 王磊
出处: http://vipstone.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,请标明出处。

相关文章
|
2月前
|
Java
Java Set以其“不重复”的特性,为我们提供了一个高效、简洁的处理唯一性约束数据的方式。
【10月更文挑战第16天】在Java编程中,Set接口确保集合中没有重复元素,每个元素都是独一无二的。HashSet基于哈希表实现,提供高效的添加、删除和查找操作;TreeSet则基于红黑树实现,不仅去重还能自动排序。通过这两个实现类,我们可以轻松处理需要唯一性约束的数据,提升代码质量和效率。
40 2
c#之Attribute特性的原理
c#之Attribute特性的原理
70 0
Attribute特性的原理
Attribute特性的原理
55 0
|
编译器 测试技术 Go
不同写法的性能差异
不同写法的性能差异
70 0
|
编译器 测试技术 Go
不同写法的性能差异(1)
不同写法的性能差异(1)
65 0
|
测试技术 Go
不同写法的性能差异(2)
不同写法的性能差异(2)
72 0
ts重点学习112-泛型的兼容性
ts重点学习112-泛型的兼容性
72 0
ts重点学习112-泛型的兼容性
ts重点学习106-函数类型得兼容性
ts重点学习106-函数类型得兼容性
85 0
ts重点学习106-函数类型得兼容性
ts重点学习105-函数类型得兼容性
ts重点学习105-函数类型得兼容性
92 0
ts重点学习105-函数类型得兼容性