i3a*_*non 31
没有一般规则,它有所不同.一些功能只是语法糖,一些功能以前是不可能的,有些是两者的组合.
字符串插值 - 这个:
string result = $"{bar}";
Run Code Online (Sandbox Code Playgroud)
代替:
string result = string.Format("{0}", bar);
Run Code Online (Sandbox Code Playgroud)空传播运算符(?.) - 这:
var result = Foo()?.Length
Run Code Online (Sandbox Code Playgroud)
代替:
var temp = Foo();
var result = (temp != null) ? temp.Length : null;
Run Code Online (Sandbox Code Playgroud)字符串插值 - 还增加了对IFormattable使用的支持,FormattedString因此这是可能的:
IFormattable result = $"{bar}"
Run Code Online (Sandbox Code Playgroud)在catch/finally中等待 - 现在可以使用awaitin catch和finallyblocks:
try
{
}
catch
{
await Task.Delay(1000);
}
Run Code Online (Sandbox Code Playgroud)当然,这两个类别中都有更多功能,例如异常过滤器和表达式身份成员.
Pau*_*ado 10
与C#6.0中的大多数新功能一样,如果要使用的变量的实例不为null,则空条件运算符只是简写(语法糖,如果要调用它),以获取成员值的模式.
鉴于一种s类型string,这个:
int? l = s?.Length;
Run Code Online (Sandbox Code Playgroud)
被翻译成:
int? l = s == null ? null : s.Length;
Run Code Online (Sandbox Code Playgroud)
它可以与null合并运算符(??)结合使用:
int l = s?.Length ?? 0;
Run Code Online (Sandbox Code Playgroud)
字符串插值也作为速记开始,string.Format但演变为可以产生一个string或一个的模式IFormatble.请参阅当前规范以获取更多信息.
顺便说一句,roslyn是编译器平台的代号,而不是语言或它们的功能.