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

首頁 > 編程 > C# > 正文

C# 6.0 的知識梳理

2020-01-24 00:51:54
字體:
來源:轉載
供稿:網友

目前最新的版本是 C# 7.0,VS 的最新版本為 Visual Studio 2017 RC,兩者都尚未進入正式階段。C# 6.0 雖說出了一段時間,但是似乎有許多園友對這一塊知識并不了解,如拼接字符串的 $ 符號,在此,小人獻上拙作一篇《C# 6.0 的知識梳理》,祝大家在新的一年里:年年有今日,歲歲有今朝,月月漲工資,周周中彩票,天天好心情,日日好運道,白天遇財神,夜晚數鈔票。

好了,廢話不多說,我們先來回顧一下 C# 的版本史。后續我會對帶 0 的版本號進行的簡寫:C# 6.0 -> C# 6。由于新的特性較多,筆者就每種特性只截取其中一部分作為示例,點到即止。

一、C# 與 VS 的前世今生

二、nameof

用于獲取變量、類型或成員的簡單(非限定)字符串名稱。可以在錯誤消息中使用類型或成員的非限定字符串名稱,而無需對字符串進行硬編碼,這樣也方便重構。

用法:這里用來驗證字符串的參數是否為空:

private void Func(string msg) { if (string.IsNullOrEmpty(msg)) { throw new ArgumentException(nameof(msg)); } }

簡單示例:

using System;using SystemTest = System.Text;namespace _01_nameof{ class Program { private static void Func1(int x) { } private string F<T>() => nameof(T); private void Func2(string msg) { } static void Main(string[] args) { var program = new Program(); Console.WriteLine(nameof(SystemTest)); Console.WriteLine(nameof(Func1)); Console.WriteLine(nameof(Program)); Console.WriteLine(nameof(program)); Console.WriteLine(nameof(F)); Console.Read(); } }}

【備注】如果需要獲取完全限定名,我們可以通過 typeof 表達式和 nameof 結合使用。

三、內插字符串 Interpolated Strings

用 $ 來構造字符串。 內插字符串表達式類似于包含表達式的模板字符串。內插字符串表達式通過將包含的表達式替換為表達式結果的 ToString 表現形式來創建字符串。

簡單示例:

 var name = "Fanguzai"; Console.WriteLine($"Hello, {name}");

【注意】想要在內插字符串中包含大括號(“{” 或 “}”),請使用兩個大括號,即 “{{” 或 “}}”。

值得思考的示例:

 var s1 = $"hello, {name}"; IFormattable s2 = $"Hello, {name}"; FormattableString s3 = $"Hello, {name}";

四、NULL 條件運算符

用于在執行成員訪問 (?.) 或索引 (?[) 操作之前,測試是否存在 NULL 值。 這些運算符可讓你編寫更少的代碼來檢查 null 值。

string name = null;  Console.WriteLine($"1:{name?.Length}"); name = "Fanguzai"; Console.WriteLine($"2:{name?.Length}"); Console.WriteLine($"3: {name?[0]}");

我們來看看另一種用途,可以使用非常少的代碼以線程安全的方式調用委托:

//普通的委托調用 Func<int> func = () => 0; if (func!=null) { func(); } //簡化調用 func?.Invoke();

五、catch 和 finally 塊中使用 await

現在可以在 catch 和 finally 塊中使用 await 了。

用法:

async Task Test() { var wc = new WebClient(); try { await wc.DownloadDataTaskAsync(""); } catch (Exception) { await wc.DownloadDataTaskAsync("");  //OK } finally { await wc.DownloadDataTaskAsync("");  //OK } }

六、自動實現的屬性

現在可以通過與初始化字段相似的方式來初始化自動屬性。當屬性訪問器中不需要任何其他邏輯時,自動實現的屬性會使屬性聲明更加簡潔。

class MyClass { public string Name { get; set; } = "Fanguzai"; } static void Main(string[] args) { var myClass=new MyClass(); Console.WriteLine(myClass.Name); Console.Read(); }

其實就是 Name 提供默認的返回值,也可以理解為這樣寫:

class MyClass { public string Name { get; set; } public MyClass() { Name = "Fanguzai"; } }

七、只有 getter 的自動屬性

現在可以定義只讀自動屬性,而不必使用完整屬性語法定義屬性??梢栽诼暶鲗傩缘奈恢没蝾愋偷臉嬙旌瘮抵谐跏蓟瘜傩?。

class Person { //新語法 private string Name { get; } = "Fanguzai"; //不用帶上 private set; //舊語法 public int Age { get; private set; } ; }

八、具有表達式主體的函數成員

可以采用與用于 lambda 表達式相同的輕量語法,聲明具有代碼表達式主體的成員。具有立即僅返回表達式結果,或單個語句作為方法主題的方法定義很常見。 以下是使用 => 定義此類方法的語法快捷方式:

class MyClass { public int this[int id] => id; //索引 public double Add(int x, int y) => x + y; //帶返回值方法 public void Output() => Console.WriteLine("Hi, Fanguzai!"); //無返回值方法 }

九、索引初始值設定項

現在可以初始化支持索引編制的集合的特定元素(如初始化字典)。如果集合支持索引,可以指定索引元素。

var nums = new Dictionary<int, string> { [7] = "seven", [9] = "nine", [13] = "thirteen" }; //這是舊的方式 var otherNums = new Dictionary<int, string>() { {1, "one"}, {2, "two"}, {3, "three"} };

十、using static 類型

可以導入靜態類型的可訪問靜態成員,以便可以在不使用類型名限定訪問的情況下引用成員。

using System;using static System.Console;namespace _08_usingStatic類型{ class Program { static void Main(string[] args) { Console.WriteLine("Hi,Fanguzai!"); WriteLine("Hi,Fanguzai!"); // 使用了 using static System.Console; } }}

using static 僅導入可訪問的靜態成員和指定類型中聲明的嵌套類型,不會導入繼承的成員。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产91| 欧美片一区二区三区| 亚洲人成网站777色婷婷| 菠萝蜜影院一区二区免费| 伊人伊成久久人综合网小说| 一区二区在线视频播放| 亚洲毛片在线免费观看| 97在线视频免费观看| 日韩一区二区三区国产| 91精品视频免费看| 欧美性色xo影院| 欧美精品制服第一页| 亚洲色图偷窥自拍| 成人精品一区二区三区电影免费| 欧美国产日韩视频| 中文字幕亚洲综合久久筱田步美| 国产精品久久久久久av福利软件| 日韩成人在线网站| 欧美激情综合色| 亚洲网址你懂得| 久久久久999| 亚洲精品综合久久中文字幕| 在线电影中文日韩| 欧美激情精品久久久久久变态| 国内偷自视频区视频综合| 欧美日本黄视频| 精品久久久精品| www.欧美三级电影.com| 国产日本欧美一区二区三区在线| 日韩av在线导航| 日本成人激情视频| 亚州精品天堂中文字幕| 综合激情国产一区| 国产一区二区动漫| 亚洲精品综合久久中文字幕| 国产成人亚洲综合| 欧美超级免费视 在线| 国产精品美女久久久免费| 欧美精品第一页在线播放| 欧美日韩激情小视频| 97激碰免费视频| 亚洲男人天堂视频| 亚洲人成网7777777国产| 精品国产一区二区三区久久久狼| 亚洲精品自在久久| 成人国产精品av| 日韩最新免费不卡| 国外日韩电影在线观看| 97涩涩爰在线观看亚洲| 国产精品旅馆在线| 91午夜理伦私人影院| 宅男66日本亚洲欧美视频| zzijzzij亚洲日本成熟少妇| 亚洲人成电影在线| 欧美激情一级二级| 亚洲天堂男人天堂| 亚洲精品欧美极品| 国产97色在线|日韩| 国产精品久久一区主播| 久久精品中文字幕免费mv| 在线观看国产精品日韩av| 欧美在线日韩在线| 日韩在线播放视频| 神马国产精品影院av| 久久精品夜夜夜夜夜久久| 亚洲成人精品久久久| 久久精品免费电影| 中文字幕在线视频日韩| 亚洲一区第一页| 成人h视频在线| 国产日韩av在线播放| 色播久久人人爽人人爽人人片视av| 欧美电影免费观看电视剧大全| 国产精品久久久久久久久久东京| 蜜臀久久99精品久久久久久宅男| 国产午夜精品一区二区三区| 在线观看精品自拍私拍| 日韩电影免费在线观看中文字幕| 国产91在线视频| 中文字幕一区二区三区电影| 国产精品麻豆va在线播放| 国产精品久久久久久久久久小说| 国产精品日韩在线观看| 国产成人一区三区| 91精品国产91久久久久久吃药| 国内精品免费午夜毛片| 欧美一级视频免费在线观看| 久久久久久久久久久av| 欧美限制级电影在线观看| 亚洲电影免费观看高清完整版| 日本成人在线视频网址| 国产成人av网| 日韩精品免费在线播放| 91探花福利精品国产自产在线| 国产精品第3页| 国产日韩精品电影| 成人动漫网站在线观看| 欧美一级大片视频| 精品国产一区二区三区久久狼5月| 欧美激情精品久久久久久变态| 欧美激情在线观看| 91精品国产高清久久久久久| 中文字幕精品一区久久久久| 久久久女人电视剧免费播放下载| 国产精品入口夜色视频大尺度| 性金发美女69hd大尺寸| 国产91精品黑色丝袜高跟鞋| 国产精品情侣自拍| 亚洲欧美另类自拍| 日韩a**中文字幕| 欧美日韩国产麻豆| 日韩中文字幕免费视频| 日韩高清免费在线| 国产精品美乳在线观看| 亚洲精品99久久久久中文字幕| 91久久久国产精品| 久久av中文字幕| 欧美成人sm免费视频| 成人观看高清在线观看免费| 在线视频免费一区二区| 亚洲天堂男人天堂| 久久久极品av| 57pao国产成人免费| 欧美丝袜美女中出在线| 国产xxx69麻豆国语对白| 欧美大胆在线视频| 欧美专区福利在线| 亚洲色图18p| 日韩成人黄色av| 91成人在线播放| 国产精品美女无圣光视频| 91超碰中文字幕久久精品| 国产第一区电影| 秋霞成人午夜鲁丝一区二区三区| 亚洲欧美日韩天堂| 久久天天躁狠狠躁夜夜躁| 91免费精品视频| 97人洗澡人人免费公开视频碰碰碰| 久久精品国产成人精品| 久久精品美女视频网站| 97久久国产精品| 欧美激情第1页| 精品成人国产在线观看男人呻吟| 国产伦精品一区二区三区精品视频| 成人做爽爽免费视频| 午夜精品久久久久久久白皮肤| 成人天堂噜噜噜| 欧美日韩中文字幕在线视频| 国产精品久久久久久久久久新婚| 欧美一级片在线播放| 久久久久久久亚洲精品| 海角国产乱辈乱精品视频| 26uuu亚洲国产精品| 色无极亚洲影院| 欧美黑人极品猛少妇色xxxxx| 欧美性猛交丰臀xxxxx网站| 97精品在线视频| 亚洲第一二三四五区| 日韩av中文字幕在线免费观看| 亚洲人成网站777色婷婷| 欧美激情免费看| 国产成人鲁鲁免费视频a| 91国内产香蕉| 日韩欧美主播在线|