亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

探秘C# 6.0 的新特性

2020-01-24 02:06:46
字體:
來源:轉載
供稿:網友

C# 6.0 中的新特性

我們可以對這些新特性一個一個的進行討論,而首先要列出 C# 6.0 中這些特性的一個清單

自動的屬性初始化器 Auto Property Initializer

主構造器 Primary Consturctor

字典初始化器 Dictionary Initializer

聲明表達式 Declaration Expression

靜態的Using Static Using

catch 塊中的 await

異常過濾器 Exception Filter

用于檢查NULL值的條件訪問操作符

1. 自動的屬性初始化器Auto Property initialzier

之前的方式

初始化一個自動屬性Auto Property的唯一方式,就是去實現一個明確的構造器,在里面對屬性值進行設置.

public class AutoPropertyBeforeCsharp6{  private string _postTitle = string.Empty;  public AutoPropertyBeforeCsharp6()  {    //assign initial values    PostID = 1;    PostName = "Post 1";  }   public long PostID { get; set; }   public string PostName { get; set; }   public string PostTitle  {    get { return _postTitle; }    protected set    {      _postTitle = value;    }  }}

有了這個特性之后的方式

使用 C# 6 自動實現的帶有初始值的屬性可以不用編寫構造器就能被初始化. 我們可以用下面的代碼簡化上面的示例:

public class AutoPropertyInCsharp6{  public long PostID { get; } = 1;   public string PostName { get; } = "Post 1";   public string PostTitle { get; protected set; } = string.Empty;}

2. 主構造器

我們使用構造器主要是來初始化里面的值.(接受參數值并將這些參數值賦值給實體屬性).

之前的方式

public class PrimaryConstructorsBeforeCSharp6{  public PrimaryConstructorsBeforeCSharp6(long postId, string postName, string postTitle)  {    PostID = postId;    PostName = postName;    PostTitle = postTitle;   }   public long PostID { get; set; }  public string PostName { get; set; }  public string PostTitle { get; set; }}

有了這個特性之后的方式

public class PrimaryConstructorsInCSharp6(long postId, string postName, string postTitle){      public long PostID { get; } = postId;  public string PostName { get; } = postName;  public string PostTitle { get; } = postTitle;}

在 C# 6 中, 主構造器為我們提供了使用參數定義構造器的一個簡短語法. 每個類只可以有一個主構造器.

如果你觀察上面的示例,會發現我們將參數初始化移動到了類名的旁邊.

你可能會得到下面這樣的錯誤“Feature ‘primary constructor' is only available in ‘experimental' language version.”(主構造器特性只在實驗性質的語言版本中可用),為了解決這個問題,我們需要編輯SolutionName.csproj 文件,來規避這個錯誤 . 你所要做的就是在WarningTag 后面添加額外的設置

<LangVersion>experimental</LangVersion>

‘主構造器'只在‘實驗'性質的語言版本中可用

3. 字典初始化器

之前的方式

編寫一個字典初始化器的老辦法如下

public class DictionaryInitializerBeforeCSharp6{  public Dictionary<string, string> _users = new Dictionary<string, string>()  {    {"users", "Venkat Baggu Blog" },    {"Features", "Whats new in C# 6" }  };}

有了這個特性之后的方式

我們可以像數組里使用方括號的方式那樣定義一個字典初始化器

public class DictionaryInitializerInCSharp6{  public Dictionary<string, string> _users { get; } = new Dictionary<string, string>()  {    ["users"] = "Venkat Baggu Blog",    ["Features"] = "Whats new in C# 6"   };}

4. 聲明表達式

之前的方式

public class DeclarationExpressionsBeforeCShapr6(){  public static int CheckUserExist(string userId)  {    //Example 1    int id;    if (!int.TryParse(userId, out id))    {      return id;    }    return id;  }   public static string GetUserRole(long userId)  {    ////Example 2    var user = _userRepository.Users.FindById(x => x.UserID == userId);    if (user!=null)    {      // work with address ...       return user.City;    }  }}

有了這個特性之后的方式

在 C# 6 中你可以在表達式的中間聲明一個本地變量. 使用聲明表達式我們還可以在if表達式和各種循環表達式中聲明變量

public class DeclarationExpressionsInCShapr6(){  public static int CheckUserExist(string userId)  {    if (!int.TryParse(userId, out var id))    {      return id;    }    return 0;  }   public static string GetUserRole(long userId)  {    ////Example 2    if ((var user = _userRepository.Users.FindById(x => x.UserID == userId) != null)    {      // work with address ...       return user.City;    }  }}

5. 靜態的 Using

之前的方式

對于你的靜態成員而言,沒必要為了調用一個方法而去弄一個對象實例. 你會使用下面的語法

TypeName.MethodNamepublic 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塊

//示例 1try{  //Some code}catch (Exception ex) if (ex.InnerException == null){  //Do work } //Before C# 6 we write the above code as follows //示例 1try{  //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";

 以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美午夜片欧美片在线观看| 亚洲第一网中文字幕| 日韩精品电影网| 亚洲天堂男人天堂女人天堂| 日本中文字幕久久看| 日韩精品在线观| 久久免费少妇高潮久久精品99| 精品日韩中文字幕| 高清欧美性猛交| 自拍视频国产精品| 精品国产一区久久久| 国产精品午夜一区二区欲梦| 国产一区二区三区久久精品| 久久精品国产久精国产思思| 欧美尺度大的性做爰视频| 久久久久久久久国产精品| 精品av在线播放| 91黑丝在线观看| 亚洲第一区第二区| 日韩欧美视频一区二区三区| 精品电影在线观看| 国产一区二区三区在线视频| 欧美一级在线亚洲天堂| 日韩黄色av网站| 欧美一区深夜视频| 一区二区av在线| 欧美成人精品激情在线观看| 中文字幕日韩在线观看| 日韩中文娱乐网| 午夜精品在线观看| 亚洲老司机av| 中文字幕亚洲综合久久筱田步美| 欧美国产第二页| 在线电影欧美日韩一区二区私密| 大量国产精品视频| 91欧美精品午夜性色福利在线| 久久久噜久噜久久综合| 欧美性猛交xxxx乱大交极品| 欧美高清不卡在线| 91精品视频免费| 欧美日韩午夜激情| 国产激情久久久久| 国产精品第一第二| 欧美另类69精品久久久久9999| 国产精品国产自产拍高清av水多| 亚洲女同性videos| 尤物九九久久国产精品的分类| 色综合天天狠天天透天天伊人| 日本午夜精品理论片a级appf发布| 色综合久久中文字幕综合网小说| 亚洲精品www久久久久久广东| 中文字幕亚洲一区在线观看| 国产精品视频精品视频| 一区二区三区国产视频| 91精品国产免费久久久久久| 欧美午夜片欧美片在线观看| 成人欧美一区二区三区黑人| 日韩欧美一区二区三区| 欧美性生活大片免费观看网址| 欧美刺激性大交免费视频| 欧美风情在线观看| 九九热精品视频国产| 亚洲一区二区免费| 宅男66日本亚洲欧美视频| 97久久超碰福利国产精品…| 91高清视频免费| 秋霞av国产精品一区| 国产精品看片资源| 午夜剧场成人观在线视频免费观看| 亚洲在线视频观看| 欧美午夜电影在线| 中文字幕在线看视频国产欧美在线看完整| 久久久免费精品视频| 国产精品影院在线观看| 热re99久久精品国产66热| 92福利视频午夜1000合集在线观看| 亚洲精品一区中文| 久久精视频免费在线久久完整在线看| 欧美激情精品久久久久久变态| 国内精品一区二区三区四区| 日韩网站免费观看高清| 日韩电视剧免费观看网站| 青草青草久热精品视频在线观看| 黑人与娇小精品av专区| 欧洲美女7788成人免费视频| 成人h视频在线观看播放| 欧美在线亚洲一区| 亚洲精品v天堂中文字幕| 久久久久久久久久久免费精品| 亚洲网在线观看| 欧美日韩亚洲视频| 欧美激情在线狂野欧美精品| 成人中文字幕+乱码+中文字幕| 亚洲精品国产精品久久清纯直播| 伊人青青综合网站| 国产欧美日韩精品丝袜高跟鞋| 精品伊人久久97| 成人久久久久久久| 97视频免费看| 亚洲香蕉av在线一区二区三区| 黄网动漫久久久| 欧美日韩在线视频一区| 国语自产在线不卡| 日本免费在线精品| 亚洲一区二区三区久久| 亚洲国产精品久久久| 久久精品人人做人人爽| 国产视频自拍一区| 国产69精品久久久久9999| 欧美成人精品一区二区| 日韩欧美亚洲一二三区| 欧美大奶子在线| 国产日韩欧美另类| 91精品国产综合久久久久久久久| 亚洲国产成人久久综合| 国产香蕉精品视频一区二区三区| 久久乐国产精品| 亚洲精品91美女久久久久久久| 国产偷国产偷亚洲清高网站| 国产亚洲精品久久久久久777| 日韩av最新在线| 91精品在线一区| 成人国产在线视频| 国产精品视频精品视频| 青青草国产精品一区二区| 国内免费精品永久在线视频| 国产精品日韩专区| 久久久久一本一区二区青青蜜月| 日韩免费观看高清| 国产精品永久免费在线| 91社影院在线观看| 疯狂做受xxxx欧美肥白少妇| 国产精品美女主播在线观看纯欲| 色在人av网站天堂精品| 国产精品一区二区三区免费视频| 欧美精品一区三区| 亚洲人午夜精品| 成人xxxxx| 日韩av在线资源| 亚洲福利小视频| 亚洲自拍另类欧美丝袜| 欧美成人精品激情在线观看| 国产精品欧美久久久| 一区二区三区黄色| 91免费国产视频| 狠狠色香婷婷久久亚洲精品| 日韩在线观看网站| 欧美与黑人午夜性猛交久久久| 亚洲国产精品女人久久久| 欧美性猛交xxx| 欧美尤物巨大精品爽| 国产精品欧美亚洲777777| 7777免费精品视频| 久久影视电视剧免费网站清宫辞电视| 97视频在线播放| 亚洲www在线观看| 欧美激情极品视频| 亚洲精品视频久久| 亚洲成人a**站| 欧美黄色www| 欧美高跟鞋交xxxxxhd| 欧美视频在线观看免费| 久久免费视频网| 日韩在线观看免费av|