• 动态类型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]

    关注下面二维码,订阅更多精彩内容。
    微信打赏
    关注公众号(加好友):

  • 相关阅读:
    软件包的作用
    Sqlserver2008 表分区教程
    C#通用类型转换 Convert.ChangeType
    缓存 HttpContext.Current.Cache和HttpRuntime.Cache的区别
    用户信息 Froms验证票证
    .NET4.0 __doPostBack未定义
    TFS2012 安装 配置笔记
    MVC学习笔记一
    新博客..第一天..
    ORACLE多表查询优化
  • 原文地址:https://www.cnblogs.com/vipstone/p/1957014.html
Copyright © 2020-2023  润新知