设为首页 加入收藏

TOP

C# 6.0 的新特性(二)
2015-04-07 15:29:34 来源: 作者: 【 】 浏览:69
Tags:6.0 特性
的语法


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 博客 上。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Dom编程优化 下一篇C++程序内存泄漏检测方法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: