动态类型var和dynamic和传统确定类型区别和效率
?? ?伴隨著vs2010的出現(xiàn),c#4.0的誕生,與之而來的動態(tài)類型dynamic更是給net程序員們錦上添花,為自己的程序書寫上帶來了給大的便利。可到底怎么用,好不好用,效率這么樣,也許是大家最迫切關(guān)注的,msdn雖然有簡介和使用方法但效率問題才是是否實用的衡量標(biāo)準(zhǔn)和使用前提,本文將為您揭開謎底。
?? ?一、var、dynamic簡介。
?? ?二、var、dynamic區(qū)別。
?? ?三、var、dynamic、傳統(tǒng)確定類型的效率對比。
一、var、dynamic簡介
1.var簡介:動態(tài)推斷類型,net framework 3.5新出的一個定義變量的類型,其實也就是弱化類型的定義,在代碼轉(zhuǎn)移時候確定類型。
?? ?msdn參考:[http://msdn.microsoft.com/zh-cn/library/bb383973.aspx]
?? ?百度百科參考:[http://baike.baidu.com/view/407694.htm]
2.dynamic簡介:動態(tài)類型,net framework 4.0新出的一個定義變量的類型,在代碼運(yùn)行的時候確定類型。
?? ? msdn參考:[http://msdn.microsoft.com/zh-cn/library/dd264741.aspx]
二、var、dynamic區(qū)別。
var、dynamic區(qū)別:
?? ?1.var程序編譯時確定類型、dynamic程序運(yùn)行時確定類型。
?? ?2.var 只能定義局部變量;dynamic可定義局部變量和類變量。
?? ?....
三、var、dynamic、傳統(tǒng)確定類型的效率對比。
?? ?var、dynamic、傳統(tǒng)確定強(qiáng)類型究竟誰能稱王,成為武林中的霸主,下面通過本人的代碼和運(yùn)行結(jié)果已見分曉。
?? ?代碼思路,執(zhí)行同樣的操作,給一個StudentInfo類賦值和打印100000次,有計時器查看運(yùn)行的時間,代碼如下:
?? ?
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動態(tài)推斷類型:" + 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動態(tài)類型:" + 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.傳統(tǒng)確定強(qiáng)類型:" + s3.ElapsedMilliseconds + "<br />");
執(zhí)行結(jié)果:
多次執(zhí)行的結(jié)論:傳統(tǒng)類型 效率 >= var 動態(tài)推斷類型 > dynamic動態(tài)類型?
[原創(chuàng)地址:http://www.cnblogs.com/stone_w/archive/2011/02/17/1957014.html]
總結(jié)
以上是生活随笔為你收集整理的动态类型var和dynamic和传统确定类型区别和效率的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Twitter Storm安装配置(Ub
- 下一篇: Sql自动配置器原理及其说明