微软热门知识点之------c#3.0新特性【转】

C# 3.0

davies 发表于 2005-9-16 09:53 | 分类: Programming ::

刚DotNet版看到有人贴了C# 3.0 的介绍,大概翻了一下,有不少惊喜,C#中引入了很多其他脚本语言的特性,越来越适合做快速开发,甚至原形开发。简要概括如下:

隐式局部变量申明 (Implicitly typed local variables)

就像JavaScript中那样 var i = 0, 以及 var s = "string" 等,它等效于 int i =0 和 string s="string" 。但不支持空类型,不支持动态类型,也不支持为初始化的隐士申明。这其实还是静态类型,并没有多大改善,只是在申明变量的时候,更"傻瓜"一点。像 Python这种完全动态类型的语言,使用起来非常爽,比如可以非常方便地将不同类型数据放在同一个数组或者集合中,但是会有不少潜在的问题,开发大型系统是就会不太合适。

扩展函数(Extension methods)

可以申明一个静态的函数,其第一个参数用this修饰,然后第一个参数类型的对象就可以把它当成员函数使用。比如有一个函数是 public static int Str2Int(this string s), 通常的使用方式是Str2Int("string")的样子,但现在可以用 "string".Str2Int() 的语法形式。这一点跟Python或者Ruby等语言非常类似。

匿名表达式 (Lambda expressions)

在要写一个非常小的函数暂时用时,还要去声明一个函数就不太合适,而匿名函数就可以很好的解决这样的问题,非常适合函数式的编程风格。C# 3.0 里也支持匿名表达式了,使用 => 操作符,左边是参数列表,右边是函数体,将一个函数在一行内完成。比如 x => x+1,相当于函数 int func(int x) { return x+1;},显然前者非常简洁直观。用匿名函数来操作数据集非常方便,比如 filter( list, x => x>5 ) 就可以把list中大于5的数提取出来。匿名函数在 Python 和 List等语言中都支持得很好。C# 中的匿名函数是delegate的延伸,它也是强类型的,比如定义Func<double, int> f = x => x + 1; 就是错的。

对象和集合初始化 (Object and collection initializers)

对象的初始化时可以显示地指明参数列表,比如 Point p = new Point{ X = 1, Y = 2}; ,这样写出来的代码可读性非常强。但不知道函数调用时能不能这样给参数赋值,在Python中是可以的。比如一个函数有10个参数,且都是可选的。加入我想给最后一个参数设定一个非默认值,若在C++中就必须把所与参数都提供,并且前面的9个都得是默认值。而在Python中,就可以在参数列表中直接指定给某个参数传递某个值,比如 open_html_page("http://blog.daviesliu.net/", proxy = "proxy.rainbud.net")。数组可以用列表的方式初始化,比如 List<int> list = new List<int> {1,2,3,4};

匿名类型 (Anonymous types)

类中的成员变量也可以是隐式申明的,在申明类时不用指定类型,其类型由初始化时的参数类型决定。这其实就相当于C++中的模版,每一个成员变量都有一个参数类型,当给定某种类型来得到实例时,就会实例化一个符合这种类型的类。这可以说是 C# 2.0 支持范型编程之后的又一次提升。C# 2.0 中的范型集合类叫 Generic Collections,比如上面举例所用的List<>。据说这种模版效率很高,甚至List<int>要高过自己实现的 IntList。

查询表达式 (Query expressions)

这是C# 3.0 非常有创意的一个地方,居然把查询数据库用的SQL语法继承到高级程序设计语言中来,这样以后开发数据库程序一定非常方便,有可能操作数据库就像操作本地变量一样方便。使用了 from where oderby select 等关键字。比如 from C in customers orderby C.Name where C.City="Beijing" select new { C.Name, C.Age } 就可以赛选出将在北京的客户,并按照名字排序,结果中只有名字和年龄两个字段。这样编程,是非常Cool的,不知道性能怎么样,应该不低。

C# 2.0 似乎还没有正式发布,居然 3.0 的规范就出来了,而且还有不少亮点,值得期待。可以看出,C# 3.0 借鉴了不少脚本语言的特点,比如Python,或许微软从开源社区挖来了不少高手来设计C#。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值