简短介绍 C# 6 的新特性 .net 6都要来了?
几周前我在不同的地方读到了有关C#6的一些新特性。我就决定把它们都收集到一起,如果你还没有读过,就可以一次性把它们都过一遍。它们中的一些可能不会如预期那样神奇,但那也只是目前的更新。
你可以通过下载VS2014或者安装这里针对visual studio2013的Roslyn包来获取它们。
那么让我们看看吧:
1. $标识符
$的作用是简化字符串索引。它与C#中那些内部使用正则表达式匹配实现索引的动态特性不同。示例如下:
- var col = new Dictionary<string, string>()
- {
- $first = "Hassan"
- };
- //Assign value to member
- //the old way:
- col.$first = "Hassan";
- //the new way:
- col["first"] = "Hassan";
2. 异常过滤器
VB编译器中早已支持异常过滤器,现在C#也支持了。异常过滤器可以让开发人员针对某一条件创建一个catch块。只有当条件满足时catch块中的代码才会执行,这是我最喜欢的特性之一,示例如下:
- try
- {
- throw new Exception("Me");
- }
- catch (Exception ex) if (ex.Message == "You")
3. catch和finally块中await关键字
据我所知,没有人知道C# 5中catch和finally代码块内await关键字不可用的原因,无论何种写法它都是不可用的。这点很好因为开发人员经常想查看I/O操作日志,为了将捕捉到的异常信息记录到日志中,此时需要异步进行。
- try
- {
- DoSomething();
- }
- catch (Exception)
- {
- await LogService.LogAsync(ex);
- }
4. 声明表达式
这个特性允许开发人员在表达式中定义一个变量。这点很简单但很实用。过去我用asp.net做了许多的网站,下面是我常用的代码:
- long id;
- if (!long.TryParse(Request.QureyString["Id"], out id))
- { }
优化后的代码:
- if (!long.TryParse(Request.QureyString["Id"], out long id))
- { }
这种声明方式中变量的作用域和C#使用一般方式声明变量的作用域是一样的。
5. Static的使用
这一特性允许你在一个using语句中指定一个特定的类型,此后这个类型的所有静态成员都能在后面的子句中使用了.
- using System.Console;
- namespace ConsoleApplication10
- {
- class Program
- {
- static void Main(string[] args)
- {
- //Use writeLine method of Console class
- //Without specifying the class name
- WriteLine("Hellow World");
- }
- }
- }
6. 属性的自动初始化:
C# 6 自动舒适化属性就像是在声明位置的域。这里唯一需要知道的是这个初始化不会导致setter方法不会在内部被调用. 后台的域值是直接被设置的,下面是示例:
- public class Person
- {
- // You can use this feature on both
- //getter only and setter / getter only properties
- public string FirstName { get; set; } = "Hassan";
- public string LastName { get; } = "Hashemi";
- }
7. 主构造器:
呼哈哈,主构造器将帮你消除在获取构造器参数并将其设置到类的域上,以支持后面的操作,这一痛苦. 这真的很有用。这个特性的主要目的是使用构造器参数进行初始化。当声明了主构造器时,所有其它的构造器都需要使用 :this() 来调用这个主构造器.
最后是下面的示例:
- //this is the primary constructor:
- class Person(string firstName, string lastName)
- {
- public string FirstName { get; set; } = firstName;
- public string LastName { get; } = lastName;
- }
简短介绍 C# 6 的新特性 .net 6都要来了?的更多相关文章
- 简短介绍 C# 6 的新特性
几周前我在不同的地方读到了有关C#6的一些新特性.我就决定把它们都收集到一起,如果你还没有读过,就可以一次性把它们都过一遍.它们中的一些可能不会如预期那样神奇,但那也只是目前的更新. 你可以通过下载V ...
- [转]简短介绍 C# 6 的新特性
原文地址:http://www.oschina.net/translate/briefly-exploring-csharp-new-features 几周前我在不同的地方读到了有关C#6的一些新特性 ...
- 如何使用开源库,吐在VS2013发布之前,顺便介绍下V2013的新特性"Bootstrap"
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" 刚看到Visual Studio 2013 Preview - ASP.NET, M ...
- 如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap"
刚看到Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 看了下VS2013带来的"新特性",直觉上看,除了引 ...
- Atitit.c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结
Atitit.c# .net 3.5 4.0 各个版本新特性战略规划总结 1. --------------.Net Framework版本同CLR版本的关系1 2. paip.----------- ...
- c# .net 3.5 4.0 4.5 5.0 6.0各个版本新特性战略规划总结【转载】
引用:http://blog.csdn.net/attilax/article/details/42014327 c# .net 3.5 4.0 各个版本新特性战略规划总结 1. ---------- ...
- Asp.Net MVC4新特性指南(2):新特性介绍
上一章讲解了最基本的MVC4说明.今天就介绍下几种新特性的使用例子: 就当大家有MVC3的基础了.在这个基础上在看下面的介绍就容易多了.1.Web API MVC4包括一个更好的解决方案:A ...
- webpack3新特性介绍
6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...
- JFFS2 文件系统及新特性介绍
简介: JFFS2 是一个开放源码的项目(www.infradead.org). 它是在闪存上使用非常广泛的读/写文件系统,在嵌入式系统中被普遍的应用.这篇文章首先分析了在闪存上使用 JFFS2 的必 ...
随机推荐
- 提问:"~"运算符
本人有一段代码关于"~"运算符 public class m{ public static void main(String[] args){ int x=~5; System.o ...
- 从高铁G18中高端如厕看12306的验证码
1.引子 最近疯狂的吐槽12306网站的虐心验证码. 从对铁老大的一贯作风来说,这个事不过是芝麻绿豆的事情.这个事件只是因为发生在网络上,而引起了广大网民的一致谴责而已. 相信更丰富的如厕经历,大家只 ...
- html页面加载和解析流程
HTML页面加载和解析流程 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件: 浏览器开始载入html代码,发现<head>标签内有一 ...
- Scrum之Sprint物件
产品订单(Product Backlog) 一个需求的列表. 一般情况使用用户故事来表示backlog条目 理想情况每个需求项都对产品的客户或用户有价值 Backlog条目按照商业价值排列优先级 优先 ...
- WS之cxf简单实现
1.服务端实现: 1.1 定义接口,用@WebService修饰: /** @WebService 所修饰的接口,那么接口里面的方法全部都属于web的服务 */ @WebService public ...
- 第一百九十四天 how can I坚持
该挺妈妈话的,不该买可乐,该熬点粥喝,肚子疼,救我. 好像每天都一样,每天都在重复.. 哎.. 对了,买了点花种子,铜钱草,牡丹.玫瑰.还买了棵小多肉. 还有,老妈把咸菜给邮过来了,有点期待啊. 连续 ...
- HDU 4618 Palindrome Sub-Array (2013多校2 1008 暴力)
Palindrome Sub-Array Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Oth ...
- Chocolatey的安装与使用
@(编程) 前言 在 Linux 下,大家喜欢用 apt-get 来安装应用程序,如今在 windows 下,大家可以使用 Chocolatey 来快速下载搭建一个开发环境. Chocolatey 的 ...
- hdu 1044 Collect More Jewels(bfs+状态压缩)
Collect More Jewels Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- HDU 5534 Partial Tree (完全背包变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5534 题意: 给你度为1 ~ n - 1节点的权值,让你构造一棵树,使其权值和最大. 思路: 一棵树上 ...