架构人生

——智软件,悦生活

C# 5.0 抢先看

 

第一:绑定运算符,:=:

这个只是简化了数据绑定,跟ASP.NET MVC3不断改进一样,其实不是什么亮点改进。

 

comboBox1.Text :=: textBox1.Text; //将文本框的内容绑定到下拉框。

 

第二:带参数的泛型构造函数:

这个的加入给一些设计增加了强大功能,泛型早在C#2.0加入后就有着强大的应用,一般稍微设计比较好的框架,都会用到泛型,C#5.0加入带参数泛型构造函数,则在原有基础上对C#泛型完善了很多。:)

 

public class T MyClass : T: classnew()

//we might have 

 
public class T MyClass : T:classnew(int)

 

第三:支持null类型运算:

此功能,个人觉得并非什么大的亮点,但至少对null类型,特别是有数据计算的这种null类型的支持,写代码还是方便不少。

注意对于Nullable Types,在C#2.0就加入进来了,但是不支持计算,比如:

int? x = null;
int? y = x + 40;

那么y值是多少?不支持计算,得到的是null,想必大家知道为什么结果是null了吧?但C#5.0可以,40加一个null的整数,我们要的结果是40,不过份吧?

 

int x? = null;

int y? = x + 40;

 

 

Myobject obj = null;

Myotherobj obj2 
= obj.MyProperty ??? new Myotherobj();

 

第四:case支持表达式:

这个是一个我很早就想如果能这样就好了,没想到在C#5.0里就加入此功能,以前case里只能写一个具体的常量,而现在可以加表达式了,灵活多了。 

switch(myobj){

 
case string.IsNullorEmpty(myotherobj):

 //逻辑代码 

  
case myotherobj.Trim().Lower: 

 //逻辑代码
}

 

 

第五:扩展属性。

我们在C#3.0里有扩展方法,那么在C#5.0里将会加入扩展属性的感念,对照扩展方法,不难理解扩展属性的概念了。以下为扩展属性的定义举例:

[Associate(string)]
public static int Zivsoft_ExtensionProperty { get;set;}

 

 

C#5.0 远远不只是上面描述的5点新功能,它如同C#4.0加入dynamic概念一样,会加入异步处理概念,这个不是几行代码就能表达,而是将在设计,架构上,又会掀起一次飞跃……

为了大家抢先看,就给一段C#5.0一段简单的异步操作的代码例子,注意(C#5.0两个新加的关键字async, await):

Task<Movie> GetMovieAsync(string title);
Task PlayMovieAsync(Movie movie);
async 
void GetAndPlayMoviesAsync(string[] titles)
{
    
foreach (var title in titles)
    {
        var movie 
= await GetMovieAsync(title);
        await PlayMovieAsync(movie);
    }
}

 

 

请注意,本文参考http://www.codeproject.com/Articles/113752/5-nice-things-to-have-in-C-5-0,并非C#5.0官方发布。
标签: C#, C#5.0

posted on 2011-05-23 11:59 周利华 阅读(8195) 评论(94) 编辑 收藏

评论

#1楼 2011-05-23 12:14 toEverybody      

累死应用程序员.........
为什么不把功能加足才发布.....
 回复 引用 查看   

#2楼 2011-05-23 12:16 Yankee      

扩展属性好!  回复 引用 查看   

#3楼 2011-05-23 12:26 IT鸟      

5都出来了 牛!!!!  回复 引用 查看   

#4楼 2011-05-23 12:27 贺臣      

有官方说明没有  回复 引用 查看   

#5楼 2011-05-23 12:27 贤达      

五年了! 哥还在用.net1.1 飘过!  回复 引用 查看   

#6楼 2011-05-23 12:34 huyong      

爽呀~!
有时间要去体验。
 回复 引用 查看   

#7楼 2011-05-23 12:35 satng      

对应的.NET 5也已经快出来了吧  回复 引用 查看   

#8楼 2011-05-23 12:48 0x0qwe      

一个字牛  回复 引用 查看   

#9楼 2011-05-23 12:49 KB8-1      

请问一下 ???表示什么意思?  回复 引用 查看   

#10楼 2011-05-23 12:51 _冻结_      

厉害,  回复 引用 查看   

#11楼 2011-05-23 12:53 路过秋天      

这下好了,又有一群人又马不停的往5.0上跑了。  回复 引用 查看   

#12楼 2011-05-23 12:58 钧梓昊逑      

万变不离其宗,上吧  回复 引用 查看   

#13楼 2011-05-23 13:05 张少峰      

这都快5.0了,太快了吧,俺现在还在用2.0呢。啥时候win7在中国全面取代xp,俺啥时候换3.5.  回复 引用 查看   

#14楼 2011-05-23 13:15 潇潇兮      

什么时候出啊?  回复 引用 查看   

#15楼 2011-05-23 13:18 孙长宇      

引用Yankee:扩展属性好!

扩展属性好!  回复 引用 查看   

#16楼 2011-05-23 13:20 秦时 明月      

这是什么概念?
性能不知道怎样?
 回复 引用 查看   

#17楼 2011-05-23 13:30 孙长宇      

引用toEverybody:
累死应用程序员.........
为什么不把功能加足才发布.....

时代在发展,社会在进步。  回复 引用 查看   

#18楼 2011-05-23 13:32 Ivony...      

纯属YY吧。。。  回复 引用 查看   

#19楼 2011-05-23 13:36 allentranks      

如果是真的,扩展属性不错啊!  回复 引用 查看   

#20楼 2011-05-23 13:40 忆起      

.net 5.0可出来了  回复 引用 查看   

#21楼 2011-05-23 13:42 Jeffrey Zhao      

哪儿冒出来的?  回复 引用 查看   

#22楼 2011-05-23 13:45 Nickelzhang      

跟着微软真能累死人  回复 引用 查看   

#23楼 2011-05-23 13:49 szny      

夯实基础才是王道,.net易上手,但是学好不容易,没必要跟风。  回复 引用 查看   

#24楼 2011-05-23 13:51 阿毅      

@toEverybody
你爹妈怎么不给你把孙子生了再生你?免得你还得读书工作恋爱买房娶妻才生的嘛。
 回复 引用 查看   

#25楼 2011-05-23 13:54 中华小鹰      

好啊,快点出来吧,非常期待“扩展属性”、“带参数的泛型构造函数”。不过,没明白一、三是什么?  回复 引用 查看   

#26楼 2011-05-23 14:00 木野狐(Neil Chen)      

感觉像假的  回复 引用 查看   

#27楼 2011-05-23 14:09 紫砂壶      

草5都要出来了。老子3还没用过呢!!出这么快干嘛,急着投胎去啊!!  回复 引用 查看   

#28楼 2011-05-23 14:09 三生石畔妳我她      

我不知道是微软该蛋疼了,还是程序员该蛋疼了  回复 引用 查看   

#29楼 2011-05-23 14:19 徐少侠      

反正都是一些语法上的东西。没啥大不了的。
 回复 引用 查看   

#30楼[楼主] 2011-05-23 14:24 周利华      

接受现实吧!!!当年我在研究纯MVC,不久微软ASP.NET MVC出来,现在MVC3都有了,我不得不放手;之前曾研究出了自己的ORM,不久微软出了ADO.NET Entity Framework,又把我的成果灭了;我一同事当年花了5年研究出根据数据库配置绑定DataGrid,结果你再看看微软现在的DataGrid,什么功能都有了,我那同事一气之下干脆去MS做测试去了。总之,接受现实吧!!  回复 引用 查看   

#31楼 2011-05-23 14:33 lovecaviar      

加到不会用了。  回复 引用 查看   

#32楼 2011-05-23 14:43 诺贝尔      

@周利华
个人的利益服从大众的利益.
 回复 引用 查看   

#33楼 2011-05-23 14:54 tomin      

顶,太猛了。  回复 引用 查看   

#34楼 2011-05-23 15:01 Kurodo      

我只希望能有 动态 泛型参数不用 一个一个的写 T1 T2 T3 到 Tn
写的我想吐...
 回复 引用 查看   

#35楼 2011-05-23 15:11 cnlcg      

都是些yufatang  回复 引用 查看   

#36楼 2011-05-23 15:21 Edwin Tai      

好多语法糖  回复 引用 查看   

#37楼 2011-05-23 15:22 Smart_Joe      

有时候更新得太快啊~~~是一种负担  回复 引用 查看   

#38楼 2011-05-23 15:28 DiggingDeeply      

我基本用点奈特4编点奈特2的程序  回复 引用 查看   

#39楼 2011-05-23 15:29 sunliqiang      

case表达式,这个实用啊  回复 引用 查看   

#40楼 2011-05-23 15:32 shenzhen      

hah ..好啊。。有来新东西了。。。一直在用2.0的飘过  回复 引用 查看   

#41楼 2011-05-23 15:48 苏飞      

什么时间发布  回复 引用 查看   

#42楼 2011-05-23 15:53 双击      

case加表达式不错
就是不知道内部怎么实现的
还有没有以前的hash机制
 回复 引用 查看   

#43楼 2011-05-23 15:58 Artech      

对扩展属性的实现比较感兴趣。
之前出扩展方法的时候,我就在想为什么不随便出个扩展属性。后来想想扩展属性还真不好实现,最根本的问题是基于属性的状态如何保持。
 回复 引用 查看   

#44楼 2011-05-23 16:00 咕嚕咕嚕      

这更新的速度 突破天际了啊
至今还在用.net 1.1的默默撸过
 回复 引用 查看   

#45楼 2011-05-23 16:13 yzwboyi      

不过是一些雕虫小技,无足挂齿,,,

没有思想大师,靠这种小把戏,最终只有思路一条!
 回复 引用 查看   

#46楼 2011-05-23 16:23 刘豆子      

第三是不是3.5就有了?  回复 引用 查看   

#47楼 2011-05-23 16:27 Jeffrey Zhao      

过两天我来发布个C# 6,大家可以期待一下,嗯。  回复 引用 查看   

#48楼 2011-05-23 16:31 C#.NET通用权限管理系统组件      

过几天可以准备学习C#6了  回复 引用 查看   

#49楼 2011-05-23 16:42 Jeff Wong      

期待10年后的c#250  回复 引用 查看   

#50楼 2011-05-23 16:54 CoderNet      

本人感觉 出5对大家来说并没有任何影响,只不过在我们原有的框架上面不能实现,但是有这样子的想法的基础上去完善!就比如这个switch,本人跟楼主一样以前碰见这个问题的时候,那时候就恨微软怎么只能输入固定的常量。现在好了,微软也是根据我们的需求扩展出了,方便开发人员的功能点! 其实本人感觉,他这个并不影响我们的开发项目!  回复 引用 查看   

#51楼 2011-05-23 17:04 Rukai      

C#的很多扩展都是为我们程序员着想的.

语法糖也好,其他也好 都是有利于提高我们的编码的,

为什么有的人总要带着鄙视的态度去看待MS的更新呢?

很多功能,只是你用不上,不代表别人用不上.

我的感悟是, 当你需要一个功能,发现微软已经提供的时候,那时候的心情,是我们自己绞尽脑汁而无果的另一种体验.

支持C#.
 回复 引用 查看   

#52楼 2011-05-23 17:11 laosu      

CLR4.0不变化就好,只是语法糖!恩,别说有点甜  回复 引用 查看   

#53楼 2011-05-23 17:31 追杀      

引用周利华:接受现实吧!!!当年我在研究纯MVC,不久微软ASP.NET MVC出来,现在MVC3都有了,我不得不放手;之前曾研究出了自己的ORM,不久微软出了ADO.NET Entity Framework,又把我的成果灭了;我一同事当年花了5年研究出根据数据库配置绑定DataGrid,结果你再看看微软现在的DataGrid,什么功能都有了,我那同事一气之下干脆去MS做测试去了。总之,接受现实吧!!

这是好事情,不是么?至少体现了一种情况,MS还是懂得我们广大开发人员的需要的.  回复 引用 查看   

#54楼[楼主] 2011-05-23 17:37 周利华      

引用追杀:
引用周利华:接受现实吧!!!当年我在研究纯MVC,不久微软ASP.NET MVC出来,现在MVC3都有了,我不得不放手;之前曾研究出了自己的ORM,不久微软出了ADO.NET Entity Framework,又把我的成果灭了;我一同事当年花了5年研究出根据数据库配置绑定DataGrid,结果你再看看微软现在的DataGrid,什么功能都有了,我那同事一气之下干脆去MS做测试去了。总之,接受现实吧!!

这是好事情,不是么?至少体现了一种情况,MS还是懂得我们广大开发人员的需要的.

只能说财大气粗,有钱可以集成一切,跟国内的腾讯有得一比,有什么好东西,都可以模仿过来,然后让你无路可走直到退出,最后他们垄断整个软件业。哈哈~  回复 引用 查看   

#55楼 2011-05-23 17:58 SnakeWind      

@toEverybody
...也就是一次性累死和慢慢累死的差别而已...
 回复 引用 查看   

#56楼 2011-05-23 18:39 搏击的小船      

不错 留个脚印 晚上看看  回复 引用 查看   

#57楼 2011-05-23 18:58 无色      

日暮途穷,光整些花哨的,难道微软你就不能把c#跨平台,在linux下稳定运行会死呀?google开源的android,如日中天。不要你开源跨操作系统运行不过分吧?你就不能把c#虚拟机搞小点,动不动比操作系统还大?你能不能不升级呀,一台电脑装了1.0又装2.0,装了2.0,又要装3.5,装了3.5又要装4.0。。等你开发到20.0用户要装20个framwork???你就不能把虚拟机性能提高些,性能越来越差?微软落入靠吸毒来保持战斗力的囿境。。。
 回复 引用 查看   

#58楼 2011-05-23 19:06 Dennis.Yang      

明显是YY的,比如第三个不符合逻辑,这样搞Debug更麻烦  回复 引用 查看   

#59楼 2011-05-23 19:18 ckd      

不是吧 5都出来了啊  回复 引用 查看   

#60楼 2011-05-23 19:33 dotNetDR_      

特性的构造函数能支持变量否(非readonly,const)  回复 引用 查看   

#61楼 2011-05-23 19:40 Guey      

@周利华
应该是一种发展趋势吧,MS怎么说也是一群人在开发,凭借他们的资源,速度肯定是比较快咯。我想和财大气粗无关吧。
 回复 引用 查看   

#62楼 2011-05-23 19:42 Guey      

@无色
顶一个,说的很有道理。跨平台方面,不知道Mono怎么样了。
 回复 引用 查看   

#63楼 2011-05-23 19:45 搏击的小船      

引用无色:日暮途穷,光整些花哨的,难道微软你就不能把c#跨平台,在linux下稳定运行会死呀?google开源的android,如日中天。不要你开源跨操作系统运行不过分吧?你就不能把c#虚拟机搞小点,动不动比操作系统还大?你能不能不升级呀,一台电脑装了1.0又装2.0,装了2.0,又要装3.5,装了3.5又要装4.0。。等你开发到20.0用户要装20个framwork???你就不能把虚拟机性能提高些,性能越来越差?微软落入靠吸毒来保持战斗力的囿境。。。

微软比你聪明多了,ms最终的目的还是他的操作系统!以后操作系统都自带.net 最新框架了 你不需要蛋疼的,除非你不用ms操作系统。说实话:ms就是不想跨平台!  回复 引用 查看   

#64楼 2011-05-23 19:58 Gray Zhang      

@无色
你以为Google如果有个操作系统还占了95%的PC市场,还会跨平台成这样?
 回复 引用 查看   

#65楼 2011-05-23 20:18 无色      

@搏击的小船

引用搏击的小船:
引用无色:日暮途穷,光整些花哨的,难道微软你就不能把c#跨平台,在linux下稳定运行会死呀?google开源的android,如日中天。不要你开源跨操作系统运行不过分吧?你就不能把c#虚拟机搞小点,动不动比操作系统还大?你能不能不升级呀,一台电脑装了1.0又装2.0,装了2.0,又要装3.5,装了3.5又要装4.0。。等你开发到20.0用户要装20个framwork???你就不能把虚拟机性能提高些,性能越来越差?微软落入靠吸毒来保持战斗力的囿境。。。

微软比你聪明多了,ms最终的目的还是他的操作系统!以后操作系统都自带.net 最新框架了 你不需要...

再过十五年,你也许不会这么说。  回复 引用 查看   

#66楼 2011-05-23 20:43 代码乱了      

加扩展属性,不知道对序列化/反序列化有何影响  回复 引用 查看   

#67楼 2011-05-23 20:53 技术拓荒者      

有持续更新,有自己的想法不错,一个软件驻足不前才是危险的  回复 引用 查看   

#68楼 2011-05-23 20:54 Mr.Wrong居然被人用了      

好玩  回复 引用 查看   

#69楼 2011-05-23 21:11 tan_Cool      

!!又有新锤子可以玩了!!  回复 引用 查看   

#70楼 2011-05-23 22:09 幸存者      

这玩意儿估计从 这篇文章来的吧,原文名叫 "5 nice things to have in C# 5.0",到楼主这儿直接就成真的 C# 5.0 了。  回复 引用 查看   

#71楼 2011-05-23 22:21 Ivony...      

引用幸存者:这玩意儿估计从 这篇文章来的吧,原文名叫 "5 nice things to have in C# 5.0",到楼主这儿直接就成真的 C# 5.0 了。



这些YY还真没几个靠谱的。。。  回复 引用 查看   

#72楼 2011-05-23 22:40 新的开始      

Case表达式,这个VB里早就有的东西终于要出来了吗。。。  回复 引用 查看   

#73楼 2011-05-23 22:53 chenkai      

@无色
MS这种绑架模式 从眼前来说利益可以最大化 但从长远来看 前景并不乐观. 就想一件对大家很OPen的事情 你不愿意出卖利益来做 总是以自己的系统为代价 这太高了 所以这件事总是有人会做的....只能说MS这种模式也会发生变化a.
 回复 引用 查看   

#74楼 2011-05-23 22:59 暴走      

你爲什麽不把 int? x = a.b.c.d.e.f.g; a-g任意一個是null,不拋出異常,返回null這個特性加入到.net 5啊?  回复 引用 查看   

#75楼 2011-05-24 00:33 JasenKin      

看来得转行才行了啊,搞C++算了....  回复 引用 查看   

#76楼 2011-05-24 00:34 henry      

求attribute在描述的时候支持泛型
[attribute<T>()]
 回复 引用 查看   

#77楼 2011-05-24 01:37 崔鹏飞      

楼主哪儿来的消息?  回复 引用 查看   

#78楼 2011-05-24 08:45 孤独流星      

郁闷呀!我们那个组长,天天守着那个vs2003 vb不放。泪奔!!!  回复 引用 查看   

#79楼 2011-05-24 09:03 Leepy      

Cool!!!  回复 引用 查看   

#80楼 2011-05-24 09:33 梅桦      

又完了我。  回复 引用 查看   

#81楼 2011-05-24 09:53 xpx888      

已阅,暂不评论  回复 引用 查看   

#82楼 2011-05-24 09:53 星隐      

软哥威5啊。  回复 引用 查看   

#83楼 2011-05-24 10:00 钧梓昊逑      

引用yzwboyi:
不过是一些雕虫小技,无足挂齿,,,

没有思想大师,靠这种小把戏,最终只有思路一条!

没开口思想,闭口思想的  回复 引用 查看   

#84楼 2011-05-24 11:13 深海沉      

第二:带参数的泛型构造函数:
第三:支持null类型运算
第四:case支持表达式:
第五:扩展属性。

这些我都是我期望已久的啊


 回复 引用 查看   

#85楼 2011-05-24 11:32 韦恩卑鄙 a-zhewg @waynebaby      

These community links are really great where a lot of people voted for new language specs, while quite a few things are already in process like...

不知道能不能ship啊。。。
 回复 引用 查看   

#86楼 2011-05-24 11:54 舞千愁      

哦也,又可以重新开始咯!微软真好~  回复 引用 查看   

#87楼 2011-05-24 12:55 hurner      

这几天正在比较PHP和.NET,一看这些C#语言特性心里格登一下,有点余悸了。  回复 引用 查看   

#88楼 2011-05-24 13:00 韦恩卑鄙 a-zhewg @waynebaby      

引用henry:
求attribute在描述的时候支持泛型
[attribute<T>()]


求匿名类型实现接口
var x= new IItem {A=1};  回复 引用 查看   

#89楼 2011-05-24 13:04 刀 刀      

@韦恩卑鄙 a-zhewg @waynebaby
同求,这点java就很舒服。C#中IEqualityComparer<T>尤其,用的又多。
 回复 引用 查看   

#90楼[楼主] 2011-05-24 16:36 周利华      

我滴神啊,C#5.0这篇随笔这么火了,访问量突破我的历史记录了!!园友们,你们太给力了,爱死你们了!  回复 引用 查看   

#91楼 2011-05-25 09:03 June拼搏      

C# 5.0 出来了,给力啊  回复 引用 查看   

#92楼 2011-05-30 12:53 jaj      

@三生石畔妳我她
都蛋疼
 回复 引用 查看   

#93楼 2011-06-10 15:36 Old      

正在啃4.0,5.0也要出来了。伤不起啊
 回复 引用 查看   

#94楼 2011-12-18 15:58 易学      

http://www.codeproject.com/Articles/113752/5-nice-things-to-have-in-C-5-0
本文内容来自codeproject! 请作者注明!
 回复 引用 查看   

<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

公告

不能不去的秘密基地
昵称:周利华
园龄:2年11个月
荣誉:推荐博客
粉丝:55
关注:4

搜索

 

常用链接

我的标签

随笔档案(55)

友情链接

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜