1、自动属性初始化的改进(有用)
 原来的用法(声明时无法同时初始化),例如:

 class MyClass
{
public int Age { get; set; }
public string Name { get; set; }
public MyClass()
{
Age = 20;
Name = "张三";
}
}

新用法(声明时可同时初始化,更方便了),例如:

 class MyClass
{
public int Age { get; set; } = 20;
public string Name { get; set; } = "张三";
}

2、String.Format的改进(有用)
 原来的用法:用string.Format(…)实现,例如:

class MyClass
{
public void MyMethod()
{
string name = "张三";
int age = 20;
string s1 = string.Format("{0},{1}", name, age);
string s2 = string.Format("姓名={0},年龄={1}", name, age);
string s3 = string.Format("{0,15},{1:d3}", name, age);
string s4 = string.Format("{0,15},{1,10:d3}", name, age);
Console.WriteLine("{0},{1},{2},{3}", s1, s2, s3 ,s4);
string s5 = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
}
}

新用法:用“$”前缀实现(变量直接写到大括号内,而且带智能提示,更方便了),例如:

class MyClass
{
public void MyMethod()
{
string name = "张三";
int age = 20;
string s1 = $"{name},{age}";
string s2 = $"姓名={name},年龄={age}";
string s3 = $"{name,15},{age:d3}";
string s4 = $"{name,15},{age,10:d3}";
Console.WriteLine($"{s1},{s2},{s3},{s4}");
string s5 = $"{DateTime.Now:yyyy-MM-dd}";
}
}

3、字典的初始化
 原来的用法:

class MyClass
{
public void MyMethod()
{
Dictionary<string, int> student = new Dictionary<string, int>();
student.Add("a1", 15);
student.Add("a2", 14);
student.Add("a3", 16);
}
}

新用法(可以直接写初始化的值,更方便了):

class MyClass
{
public void MyMethod()
{
Dictionary<string, int> student = new Dictionary<string, int>()
{
["a1"] = 15,
["a2"] = 14,
["a3"] = 16
};
}
}

4、可以用static声明静态类的引用
 原来的用法:

using System;
namespace MyApp
{
class Demo1New
{
public static double MyMethod(double x, double angle)
{
return Math.Sin(x) + Math.Cos(angle);
}
}
}

新用法(表达式比较复杂的时候有用,代码更简洁了):

using static System.Math;
namespace MyApp
{
class Demo1New
{
public static double MyMethod(double x, double angle)
{
return Sin(x) + Cos(angle);
}
}
}

5、nameof表达式
 假定WPF应用程序中有下面的类:

public class MyClass
{ public string MyText { get; set; } = "aaa"; }

并假定有下面的XAML代码:
 <StackPanel>
 
<TextBlock Name="txt1"/>
 
……
 
</StackPanel>
 代码隐藏类中原来的用法:
 txt1.SetBinding(TextBlock.TextProperty, "MyText"); 
现在的用法(因为有错误检查智能提示,用起来更方便了):
 txt1.SetBinding(TextBlock.TextProperty, nameof(MyClass.MyText)); 
6、Null-条件表达式
(有用)

 var ss = new string[] { "Foo", null };
var length0 = ss [0]?.Length; // 结果为3
var length1 = ss [1]?.Length; // 结果为null
var lengths = ss.Select (s => s?.Length ?? 0); //结果为[3, 0]

7、在try-catch-finally中使用await
 异步编程中,原来在catch或者finally中无法使用await,现在可以了:

async void SomeMethod()
{
try
{
//...etc...
}
catch (Exception x)
{
var diagnosticData = await GenerateDiagnosticsAsync (x);
Logger.log (diagnosticData);
}
finally
{
await someObject.FinalizeAsync();
}
}

C#6.0语法特性的更多相关文章

  1. c# 6.0 语法特性

    namespace _6._0新特性 { using static _6._0新特性.Statics.StaticClass; class Program { static void Main(str ...

  2. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  3. C# 6.0语法新特性体验(二)

    之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性,现在随着Visual Studio 14 CTP3的发布,又陆续可以体验一些新的特性了,这里简单的介绍一下之前没 ...

  4. 探索C#之6.0语法糖剖析

    阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...

  5. 总结常见的ES6新语法特性

    前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...

  6. atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性

    atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性   1.1. Servlet和JSP规范版本对应关系:1 1.2. Servlet2 ...

  7. C# 7.0 新特性2: 本地方法

    本文参考Roslyn项目中的Issue:#259. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...

  8. C# 7.0 新特性1: 基于Tuple的“多”返回值方法

    本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...

  9. C# 7.0 新特性3: 模式匹配

    本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# ...

随机推荐

  1. UML总结---UML中的事物和关系

    UML中的事物 名称 说明 图形 类 相同属性方法的集合 接口 类或组件提供的,可以完成特定功能的一组操作的集合 协作 合作的动作 用例 系统的一个功能 节点 代表可计算的资源 活动类 有多个线程的类 ...

  2. 基于Dedup的数据打包技术

    基于Dedup的数据打包技术 0.引言    Tar, winrar, winzip是最为常见的数据打包工具软件,它们把文件集体封装成一个单独的数据包,从而方便数据的分布.传输.归档以及持久保存等目的 ...

  3. linux ad7606 驱动解读

    本文记录阅读linux ad7606驱动的笔记. 主要文件 drivers/staging/iio/adc/ad7606_spi.c drivers/staging/iio/adc/ad7606_co ...

  4. e655. 混合风格的文本

    This example applies a new font and background color to a part of the text. You can apply styles to ...

  5. javascript -- 原型对象

    原型对象: 每个对象都有一个参考对象,这个参考对象称之为原型对象.原型对象有自己的属性和方法.当A是B的原型对象时,那 么B拥有A中的所有属性和方法. 原型对象的工作原理: 使用原型对象定义一个新的对 ...

  6. jquery轻量级富文本编辑器Trumbowyg

    html: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv=&qu ...

  7. 调用外部 DLL 中的函数(1. 早绑定)

    ,b,t,);end; end.

  8. 总结ASP.NET C#中经常用到的13个JS脚本代码

    1.按钮前后台事件 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click ...

  9. Unity+高通Vuforia SDK——AR

    一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...

  10. 移动端web开发技巧 -- 转载

    META相关 1. 添加到主屏后的标题(IOS)<meta name="apple-mobile-web-app-title" content="标题"& ...