随笔 - 6,  文章 - 1,  评论 - 0,  阅读 - 2013
< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10
前一段时间写Resume,写自己熟悉.Net 2.0。然后想到如果别人问C#2.0有些什么新特性,我应该怎么回答呢?发觉原来除了泛型(Generic)外自己也说不出什么。于是翻书查资料重新整理了思路。重新审视C#2.0的新特性,当作学习3.0的起步吧。

一、泛型(Generic)
概述:
引入泛型绝对是C#2.0的最大的新特性。通过“参数化类型”实现一份代码操作多种数据类型。泛型的优点是更好的类型安全;更好的复用;更
高的效率和更清晰的约束。但说实在,除了一些通用的数据结构,集合类和通用算法外,使用到泛型的地方还不多。而且System.Collections.Generic中的类也很够用了。基本没写过自己的泛型类。
语法点:
语法方面主要是使用在类型名称后面加入“<T>”来传入类型参数。涉及泛型类型继承的一条规则是“封闭类(所有类型都已确定)不能继承
开放类(含有未确定类型)”。同时可以使用where来添加对作为参数的类型的约束。具体有四种:基类约束、接口约束、构造器约束和值/引用类型约束。最后特别提醒,delegate也是一种类型,别忘了泛型委托。

二、泛型方法(Generic Method)
概述:
泛型方法即在方法声明中包含类型参数。其实属泛型的内容。但泛型方法可以用在一般类中。
语法点:
重载(overload)的时候注意,约束不成为方法签名的一部分。而重写(override),约束是会被默认继承的。

三、匿名方法(Anonymous Method)
概述:可以直接将代码赋给委托。在进行委托实例化时可以省略掉委托类型。代码示例如下:
myButton.Click += delegate {//代码}
myButton.Click += myClick;
感觉就是一种语法的简化。从代码的可维护性来说还是不用为好。但又确实能使一些代码简洁一点。看团队的决定吧。
语法点:
要注意外部变量的生存周期会一直延长到委托实例引用结束。尽量避免使用。

四、迭代器(Iterator)
概述:
严格来说只是简化迭代器的构造罢了。或者说简化了创建可以用于foreach的枚举集合的工作。通过引入关键字yield来实现。再不用太多的关心IEnumerator了。直接在类中实现GetEnumerator()然后在for循环中用yield return就可以了。
语法点:
可以用yield break来停止迭代。

五、局部类(Partial Class)
概述:
就是允许通过关键字partial将一个类写在多个cs文件中。最大的用处可能就是将IDE自动生成的代码分开吧。大家都留意到VS05中的自动生成的代码都到designer.cs中去了吧。
语法点:
在不同部分定义中,Attribute和Interface是累加的。当然要保证基类的唯一。而abstract和sealed是部分使用,整个类生效。语义类型访问修饰符要保持一致。

六、可空类型(Nullable Type)
概述:
其实是一个泛型类型。System.Nullable<T>,T必须为值类型。并且通过“?”来作一个语法的简化。用一句代码说明就是:
int? x = null;
引入NullableType获得的启示是,.Net的ORMapping可以做得更好了。
语法点:
使用HasValue属性判断是否为null。

七、静态类(Static Class)
概述:
可以声明一个static class。该class不能被继承不能被实例化,只能包含静态成员。相当于sealed abstract。用途可以用作全局函数。另外Singleton模式的实现更方便了。
语法点:
不能有constructor,不能有实例成员,不能再使用sealed abstract修饰。不能继承其他类和实现任何interface。成员不能使用protected修饰符。

八、属性访器访问修饰符
概述:
可以额外对get、set中的其中一个属性访问其使用一个访问修饰符。用途可以说是更灵活的封装吧。
语法点:
只能在get、set的一个中使用。接口中的属性访问器不能同样不能带有访问修饰符。索引器可以使用。

九、命名空间别名限定符
概述:可以使用双冒号“::”使用一个命名空间的别名。如
using sc=System.Collection;
那么使用的时候就可以写成sc::ArrayList()了。
作用是更方便的调用不同命名空间下的同名类性。

      就写这主要的九点,其他还有的一些C#2.0的新特就不写了。因为离开发的使用更远了。总的来说除了泛型,2.0真的不是有很多的有用的变化。或许更应关注Framework的发展吧。以上的是我个人的归纳,写得不详细。如果真的想了解语法各位看官可要自己再查了。2.0已远处,C#3.0已经来了,一股LINQ的学习热潮到了。继续前行,学好新技术,更关键是用好新技术。

本文为个人原创,转载请注明出自:http://jackma.cnblogs.com/ 

posted @ 2008-11-10 13:36 风中飘雪 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 下面都是我收集的一些比较常用的正则表达式,因为平常可能在表单验证的时候,用到的比较多。特发出来,让各位朋友共同使用。呵呵。 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 阅读全文
posted @ 2008-05-21 15:45 风中飘雪 阅读(178) 评论(0) 推荐(0) 编辑
摘要:  非结构化WEB数据库简介   非结构化WEB数据库,是指其字段长度可变,并且每个字段的记录又可以由可重复或不可重复的子字段构成的基于INTERNET、INTRANET的数据库,用它不仅可以处理结构化数据(如数字、符号等信息)而且更适合处理非结构化数据(全文文本、图象、声音、影视、超媒体等信息)并在互联网上发布。非结构化WEB数据库主要是针对非结构化数据而产生的,与以往流行的关系数据库相比,其最大区别在于它突破了关系数据库结构定义不易改变和数据定长的限制,支持重复字段、子字段以及变长字段并实现了对变长数据和重复字段进行处理和数据项的变长存储管理,在处理连续信息(包括全文信息)和非结构化信息(包括各种多媒体信息)中有着传统关系型数据库所无法比拟的优势。       2 图书馆多媒体信息资源的特点及组织利用中的技术要求 阅读全文
posted @ 2008-05-08 12:23 风中飘雪 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 一个大型的企业应用程序,因其繁、复杂、多变的情况,再加上用户、网络、服务器、单机等因素,往往导致程序运行不稳定,甚至导致系统崩溃或者系统数据紊乱,资料不能正常读取,严重影响企业运作。事实上,很多时候,系统出错都是由用户造成的,比如某个关键数据,被用户无意或恶意更改,导致程序或报表一连串的错误。程序员花了一大堆功夫查来查去,结果查到是用户的错,但当你去责问用户时,用户一脸无辜的样子:“不是我”,“我没动过”,这时候,责任者是谁?根本没法查出,数据也因为没有保存到操作记录,再也没有办法恢复到原状。这怎么办?! 阅读全文
posted @ 2008-05-05 14:03 风中飘雪 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下: 阅读全文
posted @ 2008-05-04 08:57 风中飘雪 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1.静态变量和非静态变量的区别? 答: 静态变量: 静态变量使用 static 修饰符进行声明 在所属类被装载时创建 通过类进行访问 所属类的所有实例的同一静态变量都是同一个值 非静态变量: 不带有 static 修饰符声明的变量称做非静态变量 在类被实例化时创建 通过对象进行访问 同一个类的不同实例的同一非静态变量可以是不同的值 示例: using System; using System.C... 阅读全文
posted @ 2008-04-25 00:00 风中飘雪 阅读(147) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示