的语法
TypeName.MethodName
?
public class StaticUsingBeforeCSharp6
{
? ? public void TestMethod()
? ? {
? ? ? ? Console.WriteLine("Static Using Before C# 6");
? ? }
}
之后的方式
在 C# 6 中,你不用类名就能使用 静态成员 . 你可以在命名空间中引入静态类.
如果你看了下面这个实例,就会看到我们将静态的Console类移动到了命名空间中
using System.Console;
namespace newfeatureincsharp6
{
? ? public class StaticUsingInCSharp6
? ? {
? ? ? ? public void TestMethod()
? ? ? ? {
? ? ? ? ? ? WriteLine("Static Using Before C# 6");
? ? ? ? }
? ? }
}
6. catch块里面的await
C# 6 之前catch和finally块中是不能用 await 关键词的. 在 C# 6 中,我们终于可以再这两个地方使用await了.
try
{? ? ? ? ?
? //Do something
}
catch (Exception)
{
? await Logger.Error("exception logging")
}
?
7. 异常过滤器
异常过滤器可以让你在catch块执行之前先进行一个 if 条件判断.
看看这个发生了一个异常的示例,现在我们想要先判断里面的Exception是否为null,然后再执行catch块
//示例 1
try
{
? ? //Some code
}
catch (Exception ex) if (ex.InnerException == null)
{
? ? //Do work
?
}
?
//Before C# 6 we write the above code as follows
?
//示例 1
try
{
? ? //Some code
}
catch (Exception ex)
{
? ? if(ex.InnerException != null)
? ? {
? ? ? ? //Do work;
? ? }
}
?
8. 用于检查NULL值的条件访问操作符?.
看看这个实例,我们基于UserID是否不为null这个条件判断来提取一个UserRanking.
之前的方式
var userRank = "No Rank";
if(UserID != null)
{
? ? userRank = Rank;
}
?
//or
?
var userRank = UserID != null ? Rank : "No Rank"
?
有了这个特性之后方式
var userRank = UserID?.Rank ?? "No Rank";
C# 6.0中的新特性 第一次出现在 Venkat Baggu 博客 上。