动态类型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次,有計時器查看運行的時間,代碼如下:
?? ?
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 />");
執行結果:
多次執行的結論:傳統類型 效率 >= var 動態推斷類型 > dynamic動態類型?
[原創地址:http://www.cnblogs.com/stone_w/archive/2011/02/17/1957014.html]
總結
以上是生活随笔為你收集整理的动态类型var和dynamic和传统确定类型区别和效率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twitter Storm安装配置(Ub
- 下一篇: Linux中Samba详细安装