Visual Studio 2015与C#6.0新特性
"
今天,我们很高兴宣布下一代开发工具Visual Studio 2015的新特性,新的改进包括:支持跨平台的C开发、新开源的.NET编译平台、C11和C++14的支持,集成Apache的Cordova跨平台移动开发工具和ASP.NET5新框架,这些改进有大有小,零度在此摘录Visual Studio 2015在C#开发方面的新特性。
1、使用null条件运算符,在调用对象的属性或者方法时,我们通常需要检查对象是否为null,现在你不需要写一个if语句,我们提供更便捷的方法,下面的代码获取list中元素的数量,当list本身为null时,Count方法也将返回null值。
<span style=color: blue;>public int? GetListItemCount(<span style=color: #2b91af;>List<<span style=color: blue;>int> list) { <span style=color: blue;>return list?.Count(); }
2、使用新增的nameof关键字获取参数、成员和类型的字符串名称。比个例子:当需要知道变量名的字符串表示形式时,我们可以这样写:
<span style=color: #2b91af;>DateTime currentDate = <span style=color: #2b91af;>DateTime.Now; <span style=color: #2b91af;>Console.WriteLine(<span style=color: #a31515;>{0}={1}, <span style=color: blue;>nameof(currentDate), currentDate);
输入结果如下所示,nameof关键字将变量名作为字符串形式直接输出:
currentDate=2014/12/8 21:39:53
3、在字符串中直接插入变量,而不需要在字符串格式化语句中写形如的格式化模板,如下的代码输出:“零度编程,欢迎您!”
<span style=color: blue;>string siteName = <span style=color: #a31515;>零度编程; <span style=color: blue;>string welcome = $<span style=color: #a31515;>,欢迎您!;
4、Lambda表达式可以作为方法体或者属性的实现,我们可以直接将一个表达式赋予一个方法或者属性。
<span style=color: blue;>public class <span style=color: #2b91af;>Book { <span style=color: blue;>public decimal Price { <span style=color: blue;>get; <span style=color: blue;>set; }
<span style=""color: blue;"">public int </span>Count { <span style=""color: blue;"">get</span>; <span style=""color: blue;"">set</span>; }
<span style=""color: blue;"">public decimal </span>GetTotalPrice() => <span style=""color: blue;"">this</span>.Price * <span style=""color: blue;"">this</span>.Count;
}
<span style=color: blue;>public class <span style=color: #2b91af;>Book { <span style=color: blue;>public decimal Price { <span style=color: blue;>get; <span style=color: blue;>set; }
<span style=""color: blue;"">public int </span>Count { <span style=""color: blue;"">get</span>; <span style=""color: blue;"">set</span>; }
<span style=""color: blue;"">public decimal </span>TotalPrice => <span style=""color: blue;"">this</span>.Price * <span style=""color: blue;"">this</span>.Count;
}
5、在这之前,如果您要初始化对象的一个属性或者给属性赋默认值,需要定义一个私有字段,给私有字段赋初始值,现在可以这样写:
<span style=color: blue;>public class <span style=color: #2b91af;>Book { <span style=color: blue;>public decimal Price { <span style=color: blue;>get; <span style=color: blue;>set; } = 0m;
<span style=""color: blue;"">public int </span>Count { <span style=""color: blue;"">get</span>; <span style=""color: blue;"">set</span>; } = 10;
}
6、在新的C#6.0种提供了对象索引初始化的新方法,现在初始化一个对象的索引可以这样:
<span style=color: blue;>var myObject = <span style=color: blue;>new MyObject { [<span style=color: #a31515;>Name001] = <span style=color: #a31515;>零度, [<span style=color: #a31515;>Name002] = <span style=color: #a31515;>编程, [<span style=color: #a31515;>Name003] = <span style=color: #a31515;>网站 };
7、在对一个异常进行catch捕获时,提供一个筛选器用于筛选特定的异常,这里的if就是一个筛选器,示例代码如下:
<span style=color: blue;>try { <span style=color: blue;>throw new <span style=color: #2b91af;>ArgumentNullException(<span style=color: #a31515;>bookName); } <span style=color: blue;>catch (<span style=color: #2b91af;>ArgumentNullException e) <span style=color: blue;>if(e.ParamName == <span style=color: #a31515;>bookName) { <span style=color: #2b91af;>Console.WriteLine(<span style=color: #a31515;>bookName is null !); }
8、静态引用,在这之前通过using关键字可引用命名空间,现在你可以通过using引用一个类,通过using引用的类,在代码中可不写类名,直接访问静态属性和方法。
<span style=color: blue;>using System.IO.File;
<span style=color: blue;>namespace Test { <span style=color: blue;>public class <span style=color: #2b91af;>MyClass { <span style=color: blue;>public void CreateTextFile(<span style=color: blue;>string fileName) { CreateText(fileName); } } }
上面代码中CreateText属于System.IO命名空间下File静态类的方法,由于我们使用了using静态引入了类File,所以可直接使用方法名,而不需要File.CreateText(fileName)这样写。
9、这是另一个和异常相关的特性,使得我们可以在catch 和finally中等待异步方法,看微软的示例:
<span style=color: #0000ff;>try<span style=color: #000000;> { res = <span style=color: #0000ff;>await Resource.OpenAsync(“myLocation”); <span style=color: #008000;>//<span style=color: #008000;> You could do this. <span style=color: #000000;>} <span style=color: #0000ff;>catch<span style=color: #000000;> (ResourceException e) { <span style=color: #0000ff;>await Resource.LogAsync(res, e); <span style=color: #008000;>//<span style=color: #008000;> Now you can do this. } <span style=color: #0000ff;>finally<span style=color: #000000;> { <span style=color: #0000ff;>if (res != <span style=color: #0000ff;>null<span style=color: #000000;>) <span style=color: #0000ff;>await res.CloseAsync(); <span style=color: #008000;>//<span style=color: #008000;> … and this. }
10、在之前,结构struct不允许写一个无参构造函数,现在您可以给结构写一个无参构造函数,当通过new创建结构时构造函数会被调用,而通过default获取结构时不调用构造函数。
11、使用Visual Studio 2015 创建项目时,不但可选择.NET Framework的版本,现在也可选择C#语言的版本。
12、对字典的初始化,提供新的方法,在新版本的C#6中可使用如下的方式初始化一个字典。
<span style=color: #2b91af;>Dictionary<span style=color: black;><<span style=color: blue;>string<span style=color: black;>, <span style=color: blue;>string<span style=color: black;>> siteInfos = <span style=color: blue;>new <span style=color: #2b91af;>Dictionary<span style=color: black;><<span style=color: blue;>string<span style=color: black;>, <span style=color: blue;>string<span style=color: black;>>() { { <span style=color: #a31515;>SiteUrl<span style=color: black;>, <span style=color: #a31515;>www.xcode.me <span style=color: black;>}, { <span style=color: #a31515;>SiteName<span style=color: black;>, <span style=color: #a31515;>零度编程 <span style=color: black;>}, { <span style=color: #a31515;>SiteDate<span style=color: black;>, <span style=color: #a31515;>2013-12-09 <span style=color: black;>} };
13、新的代码编辑器提供更好的体验,集成最新名为Roslyn的编译器,一些新的特性让您对这款编辑器爱不释手,最新的Visual Studio 2015中新增了一个灯泡功能,当您的代码中存在需要修复的问题或者需要重构时,代码行的左边将显示一个小灯泡,点击小灯泡后编辑器将帮助您自动修复和重构现有代码。
以上就是零度编程为您整理的关于Visual Studio 2015在开发中的新特性,希望对您有所帮助。"