Visual Studio 2015與C#6.0新特性

來源:互聯網
上載者:User

標籤:

原文連結:http://www.xcode.me/more/visual-studio-2015-new-features

 

1、使用null條件運算子,在調用對象的屬性或者方法時,我們通常需要檢查對象是否為null,現在你不需要寫一個if語句,我們提供更便捷的方法,下面的代碼擷取list中元素的數量,當list本身為null時,Count方法也將返回null值。

public int? GetListItemCount(List<int> list){    return list?.Count();}

2、使用新增的nameof關鍵字擷取參數、成員和類型的字串名稱。比個例子:當需要知道變數名的字串表示形式時,我們可以這樣寫:

DateTime currentDate = DateTime.Now;Console.WriteLine("{0}={1}", nameof(currentDate), currentDate);

輸入結果如下所示,nameof關鍵字將變數名作為字串形式直接輸出:

currentDate=2014/12/8 21:39:53

3、在字串中直接插入變數,而不需要在字串格式化語句中寫形如{n}的格式化模板,如下的代碼輸出:“零度編程,歡迎您!”

string siteName = "零度編程";string welcome = "\{siteName},歡迎您!";

4、Lambda運算式可以作為方法體或者屬性的實現,我們可以直接將一個運算式賦予一個方法或者屬性。

public class Book{    public decimal Price { get; set; }    public int Count { get; set; }    public decimal GetTotalPrice() => this.Price * this.Count;}
public class Book{    public decimal Price { get; set; }    public int Count { get; set; }    public decimal TotalPrice => this.Price * this.Count;}

5、在這之前,如果您要初始化對象的一個屬性或者給屬性賦預設值,需要定義一個私人欄位,給私人欄位賦初始值,現在可以這樣寫:

public class Book{    public decimal Price { get; set; } = 0m;    public int Count { get; set; } = 10; }

6、在新的C#6.0種提供了對象索引初始化的新方法,現在初始化一個對象的索引可以這樣:

var myObject = new MyObject{    ["Name001"] = "零度",    ["Name002"] = "編程",    ["Name003"] = "網站"};

7、在對一個異常進行catch捕獲時,提供一個篩選器用於篩選特定的異常,這裡的if就是一個篩選器,範例程式碼如下:

try{    throw new ArgumentNullException("bookName");}catch (ArgumentNullException e) if(e.ParamName == "bookName"){    Console.WriteLine("bookName is null !");}

8、靜態引用,在這之前通過using關鍵字可引用命名空間,現在你可以通過using引用一個類,通過using引用的類,在代碼中可不寫類名,直接存取靜態屬性和方法。

using System.IO.File;namespace Test{    public class MyClass    {        public void CreateTextFile(string fileName)        {            CreateText(fileName);        }    }}

上面代碼中CreateText屬於System.IO命名空間下File靜態類的方法,由於我們使用了using靜態引入了類File,所以可直接使用方法名,而不需要File.CreateText(fileName)這樣寫。

9、這是另一個和異常相關的特性,使得我們可以在catch 和finally中等待非同步方法呼叫,看微軟的樣本:

try{  res = await Resource.OpenAsync(“myLocation”); // You could do this.}catch (ResourceException e){  await Resource.LogAsync(res, e); // Now you can do this. } finally{  if (res != null)  await res.CloseAsync(); // … and this. }

10、在之前,結構struct不允許寫一個無參建構函式,現在您可以給結構寫一個無參建構函式,當通過new建立結構時建構函式會被調用,而通過default擷取結構時不調用建構函式。

11、使用Visual Studio 2015 建立項目時,不但可選擇.NET Framework的版本,現在也可選擇C#語言的版本。

12、對字典的初始化,提供新的方法,在新版本的C#6中可使用如下的方式初始化一個字典。

Dictionary<string, string> siteInfos = new Dictionary<string, string>(){    { "SiteUrl", "www.xcode.me" },    { "SiteName", "零度編程" },    { "SiteDate", "2013-12-09" }};

13、新的代碼編輯器提供更好的體驗,整合最新名為Roslyn的編譯器,一些新的特性讓您對這款編輯器愛不釋手,最新的Visual Studio 2015中新增了一個燈泡功能,當您的代碼中存在需要修複的問題或者需要重構時,程式碼的左邊將顯示一個小燈泡,點擊小燈泡後編輯器將協助您自動修複和重構現有代碼。

Visual Studio 2015與C#6.0新特性

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.