黑马程序员技术交流社区

标题: var关键字 [打印本页]

作者: brucel50    时间: 2013-7-24 16:34
标题: var关键字
以下摘自百度百科

//C#
//VAR 是.net framework 3.5新出的一个定义变量的类型
//其实也就是弱化类型的定义。
//VAR可代替任何类型


我看传智视频的老师说var是强类型,
var定义的变量类型是强类型还是弱类型啊?



作者: changvh    时间: 2013-7-24 17:11
本帖最后由 changvh 于 2013-7-24 17:15 编辑

使用var关键字,编译器会根据初始化局部变量的初始值推断变量的数据类型。也就是在编译期就决定了类型,而不是dynamic,只有在运行时才会决定类型。严格的说var不是c#的关键字,但是如果var标识用于数据类型,编译器就会认为是关键字。var是强类型,是var所代表的那个类型是强类型。
作者: 彭家贰小姐    时间: 2013-7-24 17:37
可以简单的这样理解,C#是强类型的语言:
int num = 2;
num = "2";
编译就会报错


var num = 2;
num = "2";
即使你改成var,只不过会根据后面的2来给num定义为int类型。第一句num就是int了所以第二句这样赋值,仍然会报上面的错。

但是JavaScript不同,它是弱类型的语言
int num = 2;
num = "2";
这样是OK的



作者: 马晓凤    时间: 2013-7-24 18:10
本帖最后由 马晓凤 于 2013-7-24 18:11 编辑

百度百科上说“弱化类型的定义”是相对于写程序的我们来说的比如var p=4;我们不必考虑p变量是什么类型,
但我们就将判断这个p变量是什么类型的任务交给了编译器,编译器编译的过程中会推断出p是int类型。

“弱化类型的定义”不是指弱类型,var a=4; a="455"; 编译时一样会出错,c#是强类型的语言,编译器一旦推断出a是什么类型之后,它的数据类型就不可以再变了。

js是弱类型的语言 var a=4; a="455"; 这么写就是正确的

作者: 马晓凤    时间: 2013-7-28 11:46
属于弱类型的,   var a =1; var ="12321", var a= new Person();   都可以的
强类型指的是 定义什么类型 就是什么类型,不能 改 ,int  a=123; 不能赋值为 a="123";

作者: 高文咪    时间: 2013-7-28 11:53
比如你定义var a;
a="abc";
这样你定义的a就是字符串类型了;
如果你写的a=1; 程序就会默认为你定义的a是int类型;
不过一般见这种写法的还是前台用的会多些;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2