设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2139|回复: 6
打印 上一主题 下一主题

【转载】C# 5.0 新性性

[复制链接]
跳转到指定楼层
1#
发表于 2014-3-18 12:14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

[size=14.285715103149414px]第一:绑定运算符,:=:

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

[size=14.285715103149414px]

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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-3-18 12:15:07 | 只看该作者

[size=14.285715103149414px]第二:带参数的泛型构造函数:

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

[size=14.285715103149414px]

  1. public class T MyClass : T: class, new()

  2. //we might have

  3. public class T MyClass : T:class, new(int)
复制代码




3#
 楼主| 发表于 2014-3-18 12:15:47 | 只看该作者

[size=14.285715103149414px]第三:支持null类型运算:

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

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


  1. <font color="rgb(0, 0, 0)"><font face="Verdana, Geneva, Arial, Helvetica, sans-serif"><font style="font-size: 14.285715103149414px">int? x = null;
  2. int? y = x + 40;</font></font></font>
复制代码
[size=14.285715103149414px]
那么y值是多少?不支持计算,得到的是null,想必大家知道为什么结果是null了吧?但C#5.0可以,40加一个null的整数,我们要的结果是40,不过份吧?

[size=14.285715103149414px]

  1. <font color="rgb(0, 0, 0)"><font face="Verdana, Geneva, Arial, Helvetica, sans-serif"><font style="font-size: 14.285715103149414px">int x? = null;

  2. int y? = x + 40;</font></font></font>
复制代码
[size=14.285715103149414px]
[size=14.285715103149414px]
  1. Myobject obj = null;

  2. Myotherobj obj2 = obj.MyProperty ??? new Myotherobj();
复制代码




4#
 楼主| 发表于 2014-3-18 12:16:32 | 只看该作者

[size=14.285715103149414px]第四:case支持表达式:

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


[size=14.285715103149414px]

  1. switch(myobj){

  2. case string.IsNullorEmpty(myotherobj):

  3. //逻辑代码

  4.   case myotherobj.Trim().Lower:

  5. //逻辑代码
  6. }
复制代码



5#
 楼主| 发表于 2014-3-18 12:17:09 | 只看该作者

[size=14.285715103149414px]第五:扩展属性。

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


[size=14.285715103149414px]

  1. [Associate(string)]
  2. public static int Zivsoft_ExtensionProperty { get;set;}
复制代码



6#
 楼主| 发表于 2014-3-18 12:17:53 | 只看该作者
C#5.0 远远不只是上面描述的5点新功能,它如同C#4.0加入dynamic概念一样,会加入异步处理概念,这个不是几行代码就能表达,而是将在设计,架构上,又会掀起一次飞跃……

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

  1. Task<Movie> GetMovieAsync(string title);
  2. Task PlayMovieAsync(Movie movie);
  3. async void GetAndPlayMoviesAsync(string[] titles)
  4. {
  5.     foreach (var title in titles)
  6.     {
  7.         var movie = await GetMovieAsync(title);
  8.         await PlayMovieAsync(movie);
  9.     }
  10. }
复制代码




7#
发表于 2014-3-18 19:56:10 | 只看该作者
mark,期待
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 05:45 , Processed in 0.109254 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表