频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

把我的爱送给你――C#3.5新特性介绍

来源:本站原创 作者:韩现龙 出处:巧巧读书 2008-05-08 进入讨论组
下一页 1 2 3 4 

    从笔者接触编程至今,经历了数种编程语言,从Visual Basic6.0桌面程序开发到ASP(VBScript)的网站开发,从C#1.1到C#2.0,再至今日的令人加心动的C#3.5,笔者曾多次为Windows平台下的编程感慨--越来越方便的操作,越来越强大的功能,

越来越简洁的代码使得由代码组成的编程世界中平添的许多色彩与欢乐。

    以上可以算作对即将要介绍的C#3.5新特性的一个铺垫。笔者对于C#的爱,胜过其他的任何语言,尤其对于刚刚召开不久的微软2008新技术大会上发布的Visual Studio 2008笔者的爱意更甚。于是,笔者决定将自己对它的爱以文章的形式来表达。

    让我们去由此开始,向C#3.5示爱:

    一、告诉C#3.5,我们对爱上它的暧昧-var关键字

    暧昧?众所周知,C#从出生以来都是很以一种强类型的语言示人的,并不像JavaScript和VB6.0那样给人以"暧昧"的感觉啊?而在此处介绍的关键字var,是否让您想起了JavaScript中的定义变量的关键字var?事实上,这两个看似相同的关键字却有本质上的区别。而这个var关键字并非在C#3.5中才出现的,它在C#3.0中便已经存在,笔者之所以在此介绍它,是因为欲介绍3.5,必须而且应该去介绍一下这个在C#3.0中便出现的特性--本地类型推断(Local Type Reference),如若不然,笔者内心便无法安稳。

    在C#2.0及其以前的版本中,如若定义一可以向其赋任何值的变量,那么我们需对其以object关键字进行定义,这种变量需要对值类型的进行装箱操作而且在对该变量使用的时候还需要进行相应的拆箱操作,而这种装箱拆箱所耗费的资源实在是笔者所不愿意看到的。

    那么,我们既不愿意编写无谓耗费资源的代码,又想去实现object定义变量实现的功能,怎么办?C#3.5为我们提供了一种变量定义方式:

把我的爱送给你――C#3.5新特性介绍(图一)


    
    看上面的变量定义,奇怪么?其实这就是C#3.5为我们提供的一种新功能--本地类型推断,它可以保护类型安全,而且允许您编写更为"自由"的代码。也就是说,我们可以不去考虑变量的类型而直接以var关键字去修饰它,编译器能够从给变量赋值的表达式中智能推断出变量的类型。它和COM模型中的Variant关键字定义出的变量完全不同,COM中的Variant关键字是变量晚绑定的一种方式,在编译期没有检测,仅在代码运行时才会出现它自身存在的问题,而且一不小心就会出现一大堆令人讨厌的Bug。而C#中这个var定义的变量在编译期推断出它的类型,并且编译后的IL代码中只包含推断出的类型。

    即上面的两行代码完全等同物如下代码:

把我的爱送给你――C#3.5新特性介绍(图二)

    
    那么,既然二者等同,我们为什么还要对它的这种"暧昧"情有独衷?事实上,var关键字不仅仅能够实现我们如上所述的功能,它会成为你在使用C#3.5进行编程时非常熟悉的一个朋友,记住这个"匿名类型(Anonymous Type)",也记住这个"本地类型推断(Local Type Reference)"。

进入讨论组讨论。
下一页 1 2 3 4 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章