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