C# var声明变量解析

C# var声明变量解析:

在C#3.0中提供了一种新的声明变量的方式,这就是var。

通过这个关键字,在声明变量时就无需指定类型了,变量类型是在初始化时由编译器确定的。代码如下:

var ss = "abcd";

MessageBox.Show(ss.GetType().ToString());

上面的代码将显示System.String,从而证明C#编译器已经将ss编译成了String变量了。

而在输出ss后,再输入“.”后,会看到将String类型变量的相应方法和属性也列出来了,因此可以断定,C#将ss看成了String类型,而不是Object。

所以使用var定义变量同时可以拥有Object和强类型的优点。

不过大家不要将var看成是javascript的var,它们的区别是,javascript是弱类型的语言,而且javascript中的变量(也包括用var声明的变量)可以变换类型,

如下面的javascript所示:

var s = "abcd";

s=3;

alert(s);

上面的代码第一次给s赋了一个字符串,而第二行代码又给赋了一个整数。这样的代码在javascript中没有任何问题。

但在C#3.0中,var变量一但被初始化,确定类型后,就无法改变类型了。如下面的代码是无法编译通过的:

var ss = "abcd";

ss = 44;

综上所述,在使用var定义变量时有以下四个特点:

1. 必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:

var s;

s = “abcd”;

2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

3. var要求是局部变量。

4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

但笔者建议如果事先知道变量的类型,尽量使用强类型方式来声明变量。

否则,就会造成由于大量使用var,而使得开发人员很难断定某个变量是什么类型。这样不利于程序的维护和升级。

虽然var有利有弊,如果将动态语言转换成C#语言,可以考虑使用var来定义变量。

这是因为动态语言没有类型,而要将其转换成强类型的C#语言,就必须给变量指定个类型,但事先确定类型是很费劲的,不如将其指定成var,再由C#编译器去确定变量的具体类型。

那么如果在转换的过程中,发现动态语言的变量改变了类型,该怎么办呢?这个可以使用第三部分要讲的“匿名类”来解决这个问题。

时间: 2024-10-12 22:12:57

C# var声明变量解析的相关文章

ES6的let和var声明变量的区别

关于let的描述 let允许你声明一个作用域被限制在块级中的变量.语句或者表达式.与var关键字不同的是,它声明的变量只能是全局或者整个函数块的. 作用域规则 let声明的变量只在其声明的块或子块中可用,这一点,与var相似.二者之间最主要的区别在于var声明的变量的作用域是整个封闭函数,是全域的 . function varTest() { var x = 1; if (true) { var x = 2; // 同样的变量! console.log(x); // 2 } console.lo

在全局下用let声明变量和用var声明变量还是有区别的

sleep方法的作用是让当前线程暂停指定的时间(毫秒),sleep方法是最简单的方法,在上述的例子中也用到过,比较容易理解.唯一需要注意的是其与wait方法的区别.最简单的区别是,wait方法依赖于同步,而sleep方法可以直接调用.而更深层次的区别在于sleep方法只是暂时让出CPU的执行权,并不释放锁.而wait方法则需要释放锁. 最近两天在系统的复习性能测试方面的知识,结合之前的性能测试经验有了一些总结,希望写出来与大家分享,希望多提宝贵意见,共同进步~首先来说说性能测试:性能是软件的一种

2015-09-28 第七节课 (js简介、声明变量、数据类型)

vs新建步骤 文件——新建项目——web——空白web应用程序——取名.位置.确定——此时软件会自动生成一个sln文件(解决方案),一解决方案下面可以有多个项目. 点击项目——新建文件夹css和js和image——新建html页面取名demo1 (推荐设置:工具——选项——可以设置下字体和颜色:文本编辑器——把常用的几种语言设上行号颜色提示) 什么是Javascript ? Javascript 是一种脚本语言,是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持

javacscript 1 声明变量 数据类型

1.vs新建步骤 文件——新建项目——web——空白web应用程序——取名.位置.确定——此时软件会自动生成一个sln文件(解决方案),一解决方案下面可以有多个项目. 点击项目——新建文件夹css和js和image——新建html页面取名demo1 (推荐设置:工具——选项——可以设置下字体和颜色:文本编辑器——把常用的几种语言设上行号颜色提示) 2.什么是js JavaScript是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持JavaScript的浏览器中

2015.7.15 第七课 课程重点(js、声明变量、数据类型)

1.vs新建步骤 文件——新建项目——web——空白web应用程序——取名.位置.确定——此时软件会自动生成一个sln文件(解决方案),一解决方案下面可以有多个项目. 点击项目——新建文件夹css和js和image——新建html页面取名demo1 (推荐设置:工具——选项——可以设置下字体和颜色:文本编辑器——把常用的几种语言设上行号颜色提示) 2.什么是js JavaScript是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持JavaScript的浏览器中

第七课 课程重点(js、声明变量、数据类型)

1.vs新建步骤 文件——新建项目——web——空白web应用程序——取名.位置.确定——此时软件会自动生成一个sln文件(解决方案),一解决方案下面可以有多个项目. 点击项目——新建文件夹css和js和image——新建html页面取名demo1 (推荐设置:工具——选项——可以设置下字体和颜色:文本编辑器——把常用的几种语言设上行号颜色提示) 2.什么是js JavaScript是一种脚本语言,结构简单,使用方便,其代码可以直接放入HTML文档中,可以直接在支持JavaScript的浏览器中

ES6中6种声明变量的方法

ES5 只有两种声明变量的方法:var命令和function命令. ES6 除了添加let和const命令,还有两种声明变量的方法:import命令和class命令. 所以,ES6 一共有 6 种声明变量的方法. (1) var命令. var a ; //undefined var b = 1; var定义的变量可以修改,如果不初始化会输出undefined,不会报错 var 声明的变量在window上,用let或者const去声明变量,这个变量不会被放到window上 很多语言中都有块级作用域

JS入门+声明变量+运算符

JavaScript是一门面向对象的,跨平台的脚本语言.    什么是面向对象? 答:对象:属性和方法 什么是跨平台? Js代码可以在各个平台上完美运行,如: 什么是脚本语言? 凡是不能独立执行需要依赖其他程序的,通常都叫做脚本,也叫动态语言.(宿主语言) HTML文件必须在浏览器里执行. JS文件嵌入到HTML文件里才能执行. Js特点: 解释性脚本语言 运行在浏览器(浏览器内核带有js解释器,Chrome v8引擎) 弱类型语言(松散型) 事件驱动(动态) 跨平台 VScode的使用 左侧最

关于Javascript中通过var关键字声明变量和function关键字声明函数的笔记

一.概念 1.变量声明 在JavaScript中,变量一般通过var关键字(隐式声明,let关键字声明除外)进行声明,如下通过var关键字声明a,b,c三个变量(并给其中的a赋值): var a=1,b,c; //关键字显式声明变量a,b,c,并给a赋值console.log(a); //1 //由于b,c未定义变量类型,因此输出"undefined"console.log(b); //undefinedconsole.log(c); //undefined //如果变量未声明,则输出