当前位置: 首页 > 编程笔记 >

C# 6.0 新特性汇总

茅昀
2023-03-14
本文向大家介绍C# 6.0 新特性汇总,包括了C# 6.0 新特性汇总的使用技巧和注意事项,需要的朋友参考一下

1. 静态using(static using)

静态using声明允许不使用类名直接调用静态方法。

The static using declaration allows invoking static methods without the class
name.
In C# 5
using System;
Console.WriteLine("Hello, World!");
In C# 6
using static System.Console;
WriteLine("Hello, World");

2. 表达式方法(Expression-Bodied Methods)

使用表达式方法,只有一条语句的方法可以使用lambda语法写。

With expression-bodied methods, a method that includes just one statement can
be written with the lambda syntax.
In C# 5
public bool IsSquare(Rectangle rect)
{
return rect.Height == rect.Width;
}
In C# 6
public bool IsSquare(Rectangle rect) => rect.Height == rect.Width;

3. 表达式属性(Expression-Bodied Properties)

跟表达式方法类似,只有一个get访问器的单行属性可以使用lambda语法写。

Similar to expression-bodied methods, one-line properties with only a get accessor
can be written with the lambda syntax
In C# 5
public string FullName
{
get
{
return FirstName +"" + LastName;
}
}
In C# 6
public string FullName => FirstName +"" + LastName;

4. 自动属性初始化器(Auto-Implemented Property Intializers)

自动属性可以使用属性初始化器初始化。

Auto-implemented properties can be initialized with a property initializer.

In C# 5
public class Person
{
public Person()
{
Age = 24;
}
public int Age {get; set;}
}
In C# 6
public class Person
{
public int Age {get; set;} = 42;
}

5. 只读自动属性(Read-Only Auto Properties)

C# 5需要完整的属性语法实现只读属性,C# 6可以使用自动属性实现。

To implement read-only properties, C# 5 requires the full property syntax. With
C# 6, you can do this using auto-implemented properties.
In C# 5
private readonly int _bookId;
public BookId
{
get
{
return _bookId;
}
}
In C# 6
public BookId {get;}

6. nameof操作符(nameof Operator)

字段、属性、方法和类型的name可以通过nameof访问。使用nameof,可以方便的重构name变化。

With the new nameof operator, names of fields, properties, methods, or types can
be accessed. With this, name changes are not missed with refactoring.

In C# 5
public void Method(object o)
{
if (o == null) throw new ArgumentNullException("o");
In C# 6
public void Method(object o)
{
if (o == null) throw new ArgumentNullException(nameof(o));

7. Null传递操作符(Null Propagation Operator)

Null传递操作符简化了空值检查。

The null propagation operator simplifies null checks.
In C# 5
int? age = p == null ? null : p.Age;
var handler = Event;
if (handler != null)
{
handler(source, e);
}
In C# 6
int? age = p?.Age;
handler?.Invoke(source, e);

8. 字符串插值(String Interpolation)

字符串差值移除了对string.Format的调用,使用表达式占位符取代数字格式占位符。

The string interpolation removes calls to string.Format. Instead of using
numbered format placeholders in the string, the placeholders can include
expressions.
In C# 5
public override ToString()
{
return string.Format("{0}, {1}", Title, Publisher);
}
In C# 6
public override ToString() => $"{Title} {Publisher}";

9. 字典初始化器(Dictionary Initializers)

字典可以使用类似集合的字典初始化器初始化。

Dictionaries can now be initialized with a dictionary initializer—similar to the
collection initializer.
In C# 5
var dict = new Dictionary<int, string>();
dict.Add(3,"three");
dict.Add(7,"seven");
In C# 6
var dict = new Dictionary<int, string>()
{
[3] ="three",
[7] ="seven"
};

10. 异常过滤器(Exception Filters)

异常过滤器允许你在捕获异常前进行过滤。

Exception filters allow you to filter exceptions before catching them.

In C# 5
try
{
//etc.
} catch (MyException ex)
{
if (ex.ErrorCode != 405) throw;
// etc.
}
In C# 6
try
{
//etc.
} catch (MyException ex) when (ex.ErrorCode == 405)
{
// etc.
}

11. 在Catch使用Await(Await in Catch)

await可以在catch块中直接使用,C# 5中需要变通使用。

await can now be used in the catch clause. C# 5 required a workaround.
In C# 5
bool hasError = false;
string errorMessage = null;
try
{
//etc.
} catch (MyException ex)
{
hasError = true;
errorMessage = ex.Message;
} 
if (hasError)
{
await new MessageDialog().ShowAsync(errorMessage);
}
In C# 6
try
{
//etc.
} catch (MyException ex)
{
await new MessageDialog().ShowAsync(ex.Message);
}

以上所述是小编给大家介绍的C# 6.0 新特性汇总,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍探秘C# 6.0 的新特性,包括了探秘C# 6.0 的新特性的使用技巧和注意事项,需要的朋友参考一下 C# 6.0 中的新特性 我们可以对这些新特性一个一个的进行讨论,而首先要列出 C# 6.0 中这些特性的一个清单 自动的属性初始化器 Auto Property Initializer 主构造器 Primary Consturctor 字典初始化器 Dictionary Initi

  • 本文向大家介绍C#6.0中10大新特性的应用和总结,包括了C#6.0中10大新特性的应用和总结的使用技巧和注意事项,需要的朋友参考一下 微软于2015年7月21日发布了Visual Studio 2015, .NET 2015, .NET Framework 4.6, ASP.NET 4.6, Azure SDK 2.7 for .NET, C# 6.0, F# 4.0, TypeScript 1

  • 本文向大家介绍C#6.0中你可能不知道的新特性总结,包括了C#6.0中你可能不知道的新特性总结的使用技巧和注意事项,需要的朋友参考一下 为什么写? 今天去上班的公交上,有朋友在张队(张善友)的微信群里,发了一个介绍C# 6.0新特性的视频,视频7分钟,加上本人英语实在太low,整体看下来是一脸懵逼的。 下班回到家里,打开这个视频,把视频中介绍的新特性用文档的形式记录下来,加深自己的印象,此处把我整

  • 本文向大家介绍VS2015中C#版本6.0的新特性 你需要知道,包括了VS2015中C#版本6.0的新特性 你需要知道的使用技巧和注意事项,需要的朋友参考一下 本文列出个人感觉比较有用的几个新功能,供大家参考,具体内容如下  注意:这些新特性只能用于VS2015及更高版本,无法在VS2013、VS2010等低版本中使用。当然,如果你不喜欢这些新的特性,仍然可以继续使用原来的用法(所以说它是新的语法

  • 在MFC类库上,没有做什么大的改进,只是增加了对微软的IntelliMouse(智能鼠标)的支持;对Developer Studio,则作了一些修改,增加了一些新特性,使其更易于使用。这些新特性包括: 自动化和宏功能 可使用Visual Basic脚本语言自动化一些重复性过程和工作。宏记录功能可以根据用户的操作自动生成宏操作序列。Visual Studio和它的组件都可以看作对象来处理,这意味着可

  • 主要内容:1、定义特性,2、预定义特性,3、自定义特性特性(Attribute)是一种用于在程序运行时传递各种元素(例如类、方法、结构、枚举等)行为信息的声明性代码。使用特性可以将元数据(例如编译器指令、注释、描述、方法和类等信息)添加到程序中。.Net Framework 提供了两种类型的特性,分别是预定义特性和自定义特性。 在 C# 中,特性具有以下属性: 使用特性可以向程序中添加元数据,元数据是指程序中各种元素的相关信息,所有 .NET 程序中

  • 哪些特性是在C++17中添加到C++中的? 当使用支持“C++1Z”的C++编译器时,当编译器更新到C++17时,这些功能中的哪些是可用的?

  • 1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。 回想单例设计模式:单例类是一个类只有一个实例 那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。 格式是:只有枚举项的枚举类 public enum 枚举类名 { 枚举项1,枚举项2,枚举项3…;