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

首頁 > 編程 > C# > 正文

C#6.0中10大新特性的應用和總結

2020-01-24 01:13:34
字體:
來源:轉載
供稿:網友

微軟于2015年7月21日發布了Visual Studio 2015, .NET 2015, .NET Framework 4.6, ASP.NET 4.6, Azure SDK 2.7 for .NET, C# 6.0, F# 4.0, TypeScript 1.5, Visual Studio Android 模擬器 等重量級開發產品。

由于項目升級到了.NetFramework 4.6.1,開發工具轉向了VS2015,趁機嘗試下C#6.0。結果網上的教程不進人意,許久都沒有更新,只好自己做一下總結。

1.自動屬性初始化(Auto-property initializers)

復制代碼 代碼如下:
public class Account
{
 
    public string Name { get; set; } = "summit";
 
    public int Age { get; set; } = 22;
 
    public IList<int> AgeList
    {
        get;
        set;
    } = new List<int> { 10,20,30,40,50 };
 
}

對于只讀屬性也可以這樣直接初始化(C#5.0不支持),也可以直接在構造函數里初始化

復制代碼 代碼如下:
public class Customer
{
    public string Name { get; }
    public Customer(string first, string last)
    {
        Name = first + " " + last;
    }
}

2.字符串嵌入值(String interpolation)

在之前版本的String.Format中有多少個參數就要寫多少個占位符還必須按照順序,否則就報錯.參數一多,這樣搞的話確實頭疼.新版本中在字符串前用$來標識后邊的字符可以使用{對象}來作為占位符.看個例子.

復制代碼 代碼如下:
Console.WriteLine($"年齡:{account.Age}  生日:{account.BirthDay.ToString("yyyy-MM-dd")}");
Console.WriteLine($"年齡:{account.Age}");
Console.WriteLine($"{(account.Age<=22?"小鮮肉":"老鮮肉")}");

如果想輸出{或}符號,寫兩個即可,如$"{{".
注意這個$符號,網上的N多教程都是沒有這個東東的.是直接"/{ account.Age /}",這種方式在新版本里已經被拋棄了.

3.導入靜態類(Using Static)

像之前使用Math這個靜態類的時候要先導入System命名空間后才能使用它.現在可以直接導入這個靜態,然后代碼中直接使用其函數.

復制代碼 代碼如下:
using static System.Math;//注意這里不是命名空間哦
 
Console.WriteLine($"之前的使用方式: {Math.Pow(4, 2)}");
Console.WriteLine($"導入后可直接使用方法: {Pow(4,2)}");

注意這里是using static ...
如果某個命名空間下有n個方法,用這種方式直接引入單個靜態類而不用引用所有方法還是挺方便的.

4.空值運算符(Null-conditional operators)

之前寫過無數個這樣的判斷代碼

復制代碼 代碼如下:
if (*** != null)
{
     //不為null的操作
}
return null;

現在使用可以簡化這樣方式.

復制代碼 代碼如下:
var age = account.AgeList?[0].ToString();
 
Console.WriteLine("{0}", (person.list?.Count ?? 0));

如果account.AgeList為空則整個表達式返回空,否則后邊的表達式的值.

5.對象初始化器(Index Initializers)

這種方式可以給字典或其他對象通過索引賦值初始化.

復制代碼 代碼如下:
IDictionary<int, string> dict = new Dictionary<int, string>() {
       [1]="first",
       [2]="second"
};
foreach(var dic in dict)
{
    Console.WriteLine($"key: {dic.Key} value:{dic.Value}");
}

output:
key: 1 value:first
key: 2 value:second

6.異常過濾器(Exception filters)

復制代碼 代碼如下:
private static bool Log(Exception e)
{
    Console.WriteLine("log");
    return true;
}
static void TestExceptionFilter()
{
    try
    {
        Int32.Parse("s");
    }
    catch (Exception e) when (Log(e))
    {
        Console.WriteLine("catch");
        return;
    }
}

當when()里面返回的值不為true,將持續拋出異常,不會執行catch里面的方法.

7.nameof表達式 (nameof expressions)

在對方法參數進行檢查時經常這樣寫:

復制代碼 代碼如下:
private static void Add(Account account)
{
     if (account == null)
         throw new ArgumentNullException("account");
}

如果某天參數的名字被修改了,下面的字符串很容易漏掉忘記修改.
使用nameof表達式后,編譯的時候編譯器將檢查到有修改后自動導航與重構(-_-! 不知道翻譯的對不對)

復制代碼 代碼如下:
private static void Add(Account account)
{
     if (account == null)
         throw new ArgumentNullException(nameof(account));
}

8.在cath和finally語句塊里使用await(Await in catch and finally blocks)

c#5.0里是不支持這么寫.

復制代碼 代碼如下:
Resource res = null;
try
{
    res = await Resource.OpenAsync(…);       // 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.
}

9.在屬性里使用Lambda表達式(Expression bodies on property-like function members)

復制代碼 代碼如下:
public string Name =>string.Format("姓名: {0}", "summit");
 
public void Print() => Console.WriteLine(Name);

10.在方法成員上使用Lambda表達式

復制代碼 代碼如下:
static int LambdaFunc(int x, int y) => x*y;
 
public void Print() => Console.WriteLine(First + " " + Last);

關于C#6.0新增加的語言特性目前為止也就這么多.沒有什么新功能,更多的是語法糖的改進.開發更舒服更快速. 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线国产精品| 92看片淫黄大片看国产片| 亚洲jizzjizz日本少妇| 国产日韩欧美视频在线| 亚洲国产精品视频在线观看| 国产精品国产三级国产aⅴ浪潮| 欧美性xxxx在线播放| 欧美久久久精品| 91免费在线视频网站| 国产精品久久久久久久久久久不卡| 中文字幕精品一区久久久久| 91在线中文字幕| 在线亚洲男人天堂| 欧美性猛交xxxxx水多| 色哟哟入口国产精品| 欧美电影免费观看高清| 亚洲色图18p| 亚洲精品电影网在线观看| 色香阁99久久精品久久久| 日韩av在线播放资源| 久久国产精品电影| 亚洲欧美中文日韩在线v日本| 国产亚洲人成a一在线v站| 中文在线资源观看视频网站免费不卡| 精品偷拍一区二区三区在线看| 成人美女免费网站视频| 国产玖玖精品视频| 97在线免费观看视频| 久久精品电影网| 91国偷自产一区二区三区的观看方式| 97视频在线观看亚洲| 91精品在线观看视频| 亚洲精品久久久久久久久久久| 日本欧美在线视频| 日韩女优人人人人射在线视频| 亚洲激情在线观看视频免费| 久久久黄色av| 久久综合伊人77777| 亚洲福利精品在线| 久久久久久中文| 中日韩美女免费视频网址在线观看| 久久影院中文字幕| 国产精选久久久久久| 一区二区三区 在线观看视| 国产精品尤物福利片在线观看| 欧洲美女免费图片一区| 国产精品久久久久久影视| 97香蕉超级碰碰久久免费软件| 中日韩美女免费视频网站在线观看| 欧美亚洲日本网站| 欧美另类在线播放| 亚洲美女视频网站| 欧洲亚洲免费在线| 亚州av一区二区| 亚洲精品第一国产综合精品| 91国产美女在线观看| 久久偷看各类女兵18女厕嘘嘘| 欧美在线观看日本一区| 成人性生交xxxxx网站| 日韩美女在线观看| 热草久综合在线| 欧美三级xxx| 午夜精品久久久久久99热| 欧美日韩人人澡狠狠躁视频| 中文字幕v亚洲ⅴv天堂| 亚洲精品永久免费| 九九精品在线观看| 亚洲人成啪啪网站| 久久人人爽亚洲精品天堂| 精品中文字幕视频| 欧亚精品中文字幕| 欧美日本高清视频| 亚洲一区www| 欧美国产日韩xxxxx| 亚洲欧美日韩国产精品| 日本一区二区在线播放| 亚洲aaaaaa| 欧美日韩ab片| 日韩av中文字幕在线播放| 色哟哟入口国产精品| 欧美亚洲第一页| 国产一区香蕉久久| 精品人伦一区二区三区蜜桃网站| 9.1国产丝袜在线观看| 国产成人高潮免费观看精品| 久久综合亚洲社区| 亚洲国模精品私拍| 国产精品久久久久久影视| 亚洲国产成人爱av在线播放| 国产精品国产自产拍高清av水多| 91久久国产综合久久91精品网站| 97视频在线观看亚洲| 91免费的视频在线播放| 欧美夫妻性生活xx| 欧美日韩国产一区二区| 国产亚洲成av人片在线观看桃| 亚洲视屏在线播放| 97精品国产97久久久久久| 精品爽片免费看久久| 久久综合久久八八| 伊人久久久久久久久久久久久| 久久视频中文字幕| 亚洲天堂av在线免费| 欧美最顶级丰满的aⅴ艳星| 精品亚洲一区二区三区四区五区| 国产欧美日韩中文字幕| 久久伊人免费视频| 91亚洲精品一区| 亚洲欧美另类中文字幕| 欧美一级片在线播放| 中文字幕久热精品在线视频| 久久影视电视剧免费网站清宫辞电视| 最新69国产成人精品视频免费| 日韩一区av在线| 国产精品av在线| 国产成人久久久| 亚洲第一网中文字幕| 亚洲一区中文字幕在线观看| 亚洲free性xxxx护士白浆| 国产欧美久久一区二区| 欧美激情第99页| 亚州精品天堂中文字幕| 精品久久久免费| 国产亚洲日本欧美韩国| 成人精品aaaa网站| 国产成人中文字幕| 亚洲日本中文字幕免费在线不卡| 亚洲国产日韩欧美在线图片| 亚洲人av在线影院| 国产在线精品成人一区二区三区| 国产一区二区三区免费视频| 欧美在线一区二区三区四| 国产极品精品在线观看| 欧美极品欧美精品欧美视频| 久久久久久有精品国产| 亚洲成人教育av| 91精品久久久久久| 成人激情视频免费在线| 精品二区三区线观看| 国内精品伊人久久| 精品欧美aⅴ在线网站| 亚洲伦理中文字幕| 国产精品久久久久久久久久久新郎| 精品国产成人在线| 久久这里只有精品99| 中文字幕九色91在线| 久久青草精品视频免费观看| 久久艳片www.17c.com| 亚洲欧美激情在线视频| 久久精品男人天堂| 日韩欧美中文在线| 欧美日韩高清在线观看| 91美女片黄在线观| 日韩亚洲精品电影| 国产欧美在线视频| 热久久99这里有精品| 亚洲国产精品va在看黑人| 国产精品一区二区三区在线播放| 亚洲在线免费看| 欧美成人免费视频| 国产精品wwwwww| 亚洲性av网站| 国产日韩欧美电影在线观看| 91精品91久久久久久|