知识大全 新增匿名类[1]
Posted 变量
篇首语:运气就是机会碰巧撞到了你的努力。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 新增匿名类[1]相关的知识,希望对你有一定的参考价值。
一 用var定义变量
在C# 中提供了一种新的声明变量的方式 这就是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= ;alert(s);上面的代码第一次给s赋了一个字符串 而第二行代码又给赋了一个整数 这样的代码在javascript中没有任何问题 但在C# 中 var变量一但被初始化 确定类型后 就无法改变类型了 如下面的代码是无法编译通过的
var ss = abcd ;ss = ;综上所述 在使用var定义变量时有以下四个特点
必须在定义时初始化 也就是必须是var s = abcd 形式 而不能是如下形式
var s;s = abcd ;一但初始化完成 就不能再给变量赋与初始化值类型不同的值了
var要求是局部变量
使用var定义变量和object不同 它在效率上和使用强类型方式定义变量完全一样 但笔者建议如果事先知道变量的类型 尽量使用强类型方式来声明变量 否则 就会造成由于大量使用var 而使得开发人员很难断定某个变量是什么类型 这样不利于程序的维护和升级
虽然var有利有弊 但笔者个人认为 如果将动态语言转换成C#语言 可以考虑使用var来定义变量 这是因为动态语言没有类型 而要将其转换成强类型的C#语言 就必须给变量指定个类型 但事先确定类型是很费劲的 不如将其指定成var 再由C#编译器去确定变量的具体类型 那么如果在转换的过程中 发现动态语言的变量改变了类型 该怎么办呢?这个可以使用第三部分要讲的 匿名类 来解决这个问题
cha138/Article/program/net/201311/15231相关参考