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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手带你玩转Tensorflow 物体检测 API (4)—— 模型验证

致谢声明 本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型&#xff08;2&#xff09;——训练并使用自己的模型》的基础上优化并总结&#xff0c;此博客链接&#xff1a;https://blog.csdn.net/dy_guox/article/details/79111949&#xff0c;感谢此博…

mysql tomcat列表增删改查_Tomcat-Database

Tomcat-Database介绍根据Tomcat9源码二次开发&#xff0c;增加数据库功能&#xff0c;可一行代码实现CURD安装教程需要先配置Ant&#xff0c;然后在根目录下执行ant命令&#xff0c;即可编译&#xff0c;编译后的目录在Tomcat-Database/output/build下&#xff0c;其中在bin下可…

Kafka集群部署CentOS 7

一、前言 1、Kafka简介 Kafka是一个开源的分布式消息引擎/消息中间件&#xff0c;同时Kafka也是一个流处理平台。Kakfa支持以发布/订阅的方式在应用间传递消息&#xff0c;同时并基于消息功能添加了Kafka Connect、Kafka Streams以支持连接其他系统的数据(Elasticsearch、Had…

mysql+e+文件+xls_TP5+PHPexcel导入xls,xlsx文件读取数据

首先:在extend里面引入PHPexcel文件,直接根目录导入进去html创建上传按钮上传excel上传文件立即提交重置layui.use([form,upload],function(){var formlayui.form;var uploadlayui.upload;upload.render({ //允许上传的文件后缀elem: #myfile,url: "{:url(sale/do_uploa…

SQL Server 2008 FILESTREAM特性管理文件

在SQL Server 2008中&#xff0c;新的FILESTREAM&#xff08;文件流&#xff09;特性和varbinary列配合&#xff0c;你可以在服务器的文件系统上存储真实的数据&#xff0c;但可以在数据库上下文内管理和访问&#xff0c;这个特性让SQL Server不仅可以维护好数据库内记录的完整…

System.Drawing.Color转System.Windows.Media.Color

2019独角兽企业重金招聘Python工程师标准>>> //这是两个不同的类 System.Windows.Media.Color color (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(transItemList[i].color.Name); 转载于:https://my.oschina.net/SearchVe…

Prometheus 监控Mysql服务器及Grafana可视化

Prometheus 监控Mysql服务器及Grafana可视化 mysql_exporter&#xff1a;用于收集MySQL性能信息。 使用版本mysqld_exporter 0.11.0官方地址使用文档&#xff1a;https://github.com/prometheus/mysqld_exporter图标模板&#xff1a;https://grafana.com/dashboards/7362下载…

Kafka集群部署搭建完美标准版

Kafka集群部署并启动 在本文中将从演示如何搭建一个Kafka集群开始&#xff0c;然后简要介绍一下关于Kafka集群的一些基础知识点。但本文仅针对集群做介绍&#xff0c;对于Kafka的基本概念不做过多说明&#xff0c;这里假设读者拥有一定的Kafka基础知识。 首先&#xff0c;我们…

Yolov4训练自己的数据集

Yolov4训练自己的数据集 代码运行环境Ubuntu18.04python3.6显卡1080TiCUDA10.0cudnn7.5.1OpenCV3.4.6Cmake3.12.2&#xff0c;详细环境配置安装步骤就不讲解拉&#xff0c;网上教程一大堆。从github克隆下载源码&#xff0c;链接地址&#xff1a;https://github.com/AlexeyAB/…

vs 2010 不显示解决方案文件

vs 2010 不显示解决方案文件的问题早就遇到过&#xff0c;而且也能很容易的解决&#xff0c;唯独这次太郁闷了&#xff0c;先说说之前的我办法吧&#xff0c;像往常一样&#xff0c;在工具栏里面找到 >工具>选项>项目和解决方案>常规>勾中“总是显示解决方案”&…

CentOS7 安装ownCloud

ownCloud的安装依赖LAMP环境&#xff0c;即 Linux Apache MySQL(Mariadb) PHP&#xff0c;所以在装owncloud前最好先装好这些&#xff0c;并且保证已经可用。 为了方便&#xff0c;本文在运行shell命令时都是以管理员用户身份运行&#xff08;root权限下运行&#xff09;&a…

java opencv 平移_Java中使用opencv

Java中使用opencvJava中使用opencv零、前言作为图像处理出身&#xff0c;不仅仅要会C图像处理、matlab图像处理、python图像处理、最起码也得会java图像处理&#xff0c;当然我最终还都用的是opencv这个机器视觉库了。今天简单介绍一下java中如何使用opencv。一、配置库(1)官网…

CentOS7 安装 NextCloud

NextCloud 的安装依赖LAMP环境&#xff0c;即 Linux Apache MySQL(Mariadb) PHP&#xff0c;所以在装 NextCloud前最好先装好这些&#xff0c;并且保证已经可用。 为了方便&#xff0c;本文在运行shell命令时都是以管理员用户身份运行&#xff08;root权限下运行&#xff0…

苹果系统使用之输入法的呈现与设置问题

新装的系统&#xff0c;总是纠结的出现各种问题。今天解决的就是装了Mac OS X 10.6&#xff08;苹果系统&#xff09;之后&#xff0c;输入法找不到&#xff0c;用快捷不能设置的问题。 刚开始使用mac os x 系统&#xff0c;其实说用也谈不上&#xff0c;因为本人是使用公司的电…

halcon 17 cuda cudnn 深度学习环境搭建

如果你想安装halcon17&#xff0c;那么很简单&#xff0c;硬盘剩余空间2G,内存超过256M&#xff0c;操作系统win7以上即可。 但显然我们的要求不仅如此&#xff0c;因为我们期待已久的深度学习功能。 详细要求见下表 必备环境&#xff1a;电脑必须要有 NVIDIA 独立显卡&#x…

Format Currency Sample

2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"&…

深度学习-服务端训练+android客户端物体识别实战(caffe入门教程+mobilenet+ncnn+android)

文章目录 背景 物体识别简介 自动驾驶 淘宝京东使用物体识别技术公司业务需求 深度学习简介 深度学习的位置 深度学习概念深度学习优势 深度学习基础知识 感知机 激活函数多层感知机卷积神经网络 卷积层 * 池化层 模型训练 前向传播 * 反向传播与参数优化 深度学习服务端框…

java+包装类,装箱和拆箱_Java包装类,装箱和拆箱详解

下面要给大家讲到的就是Java内置包装类方面的知识&#xff0c;这章主要会讲到Java包装类装箱和拆箱方面的知识&#xff0c;一起来了解一下。Java为每种基本数据类型分别设计了对应的类&#xff0c;这就被叫做是包装类(WrapperClasses)&#xff0c;当然&#xff0c;也有的地方叫…

Using JSON for data transfer

为什么80%的码农都做不了架构师&#xff1f;>>> JSON basics At its simplest, JSON allows you to transform a set of data represented in a JavaScript object into a string that you can easily pass from one function to another, or -- in the case of as…

Visual Studio 2010 中JS注释制作

Visual Studio 2010中的js注释已经很强大了&#xff0c;但怎么才能和调用c#的方法一样容易呢&#xff1f;怎样才能让每个参数都有注释说明呢&#xff1f;底下就是想要的答案。 先上图&#xff0c;如图所示&#xff1a; 其中红色的办法为注释效果&#xff0c;当然制作的方法也在…