你的位置:首页 > 软件开发 > ASP.net > [C#]6.0新特性浅谈

[C#]6.0新特性浅谈

发布时间:2015-08-15 20:00:08
C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间。所以现在再来聊一聊新版本带来的新特性可能也还不算晚吧?一、nameof关键字这绝对是整个新版本最让我期待的内容,它给代码重构带来了巨大的便利 ...

C#6.0出来也有很长一段时间了,虽然新的特性和语法趋于稳定,但是对于大多数程序猿来说,想在工作中用上C#6.0估计还得等上不短的一段时间。

一、nameof关键字

这绝对是整个新版本最让我期待的内容,它给代码重构带来了巨大的便利。

二、[.?]空引用判断操作符

这算是一个用于简洁代码的语法糖吧,个人觉得实用价值一般般。

三、字符串嵌入值

同样是一个用于简洁代码的语法糖,先看怎么用吧:

int i = 1;Console.WriteLine($"{nameof(i)} + 1 = {i + 1}");Console.WriteLine($"{i + 1} * {i + 1} = 4");

四、lambda方法体

仍然是用于简洁代码的特性,如下:

private void LambdaMethod() => Console.WriteLine(nameof(LambdaMethod));private get='_blank'>string LambdaProperty => nameof(LambdaProperty);

五、属性初始化器

这个特性算是盼星星盼月亮终于盼来了,虽然说重要性可能不是那么大,但是以前版本的C#居然不这么设计着实让我有些难以理解。。。

六、索引初始化器

可以说这个语法糖是集合初始化器的升级版,让基于索引的集合初始化更加合理了。

现在初始化一个Dictionary可以这么写:

new Dictionary<int, string>{  [1] = "a",  [5] = "e"};

七、异常过滤器

这个算是新特性中较为重要也是改动很大的一个部分,先来看看怎么用的:

try{  throw new IOException("Not Throw");}catch (IOException ex) when (ex.Message != "Need Throw"){  Console.WriteLine(ex.Message);}catch (NullReferenceException ex){  Console.WriteLine(ex.Message);  throw;}

八、静态成员引用

这个特性很久以前就在Java中出现了,而C#6.0也终于将其引入。

九、catch、finally中的await

终于可以在异常处理中愉快地使用异步编程语法糖了:

private async void Test(){  try  {    await new Task<int>(() =>    {      return 1;    });  }  catch  {    await new Task<int>(() =>    {      return 1;    });  }  finally  {    await new Task<int>(() =>    {      return 1;    });  }}

原标题:[C#]6.0新特性浅谈

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录