最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#6.0中10大新特性的應(yīng)用和總結(jié)

 更新時(shí)間:2016年03月26日 12:01:33   作者:浮云也是種寂寞  
微軟發(fā)布C#6.0、VS2015等系列產(chǎn)品也有一段時(shí)間了,但是網(wǎng)上的教程卻不多,這里真對(duì)C#6.0給大家做了一些示例,分享給大家。

微軟于2015年7月21日發(fā)布了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 模擬器 等重量級(jí)開發(fā)產(chǎn)品。

由于項(xiàng)目升級(jí)到了.NetFramework 4.6.1,開發(fā)工具轉(zhuǎn)向了VS2015,趁機(jī)嘗試下C#6.0。結(jié)果網(wǎng)上的教程不進(jìn)人意,許久都沒有更新,只好自己做一下總結(jié)。

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

復(fù)制代碼 代碼如下:
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 };
 
}

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

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

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

在之前版本的String.Format中有多少個(gè)參數(shù)就要寫多少個(gè)占位符還必須按照順序,否則就報(bào)錯(cuò).參數(shù)一多,這樣搞的話確實(shí)頭疼.新版本中在字符串前用$來(lái)標(biāo)識(shí)后邊的字符可以使用{對(duì)象}來(lái)作為占位符.看個(gè)例子.

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

如果想輸出{或}符號(hào),寫兩個(gè)即可,如$"{{".
注意這個(gè)$符號(hào),網(wǎng)上的N多教程都是沒有這個(gè)東東的.是直接"\{ account.Age \}",這種方式在新版本里已經(jīng)被拋棄了.

3.導(dǎo)入靜態(tài)類(Using Static)

像之前使用Math這個(gè)靜態(tài)類的時(shí)候要先導(dǎo)入System命名空間后才能使用它.現(xiàn)在可以直接導(dǎo)入這個(gè)靜態(tài),然后代碼中直接使用其函數(shù).

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

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

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

之前寫過(guò)無(wú)數(shù)個(gè)這樣的判斷代碼

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

現(xiàn)在使用可以簡(jiǎn)化這樣方式.

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

如果account.AgeList為空則整個(gè)表達(dá)式返回空,否則后邊的表達(dá)式的值.

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

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

復(fù)制代碼 代碼如下:
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.異常過(guò)濾器(Exception filters)

復(fù)制代碼 代碼如下:
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;
    }
}

當(dāng)when()里面返回的值不為true,將持續(xù)拋出異常,不會(huì)執(zhí)行catch里面的方法.

7.nameof表達(dá)式 (nameof expressions)

在對(duì)方法參數(shù)進(jìn)行檢查時(shí)經(jīng)常這樣寫:

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

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

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

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

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

復(fù)制代碼 代碼如下:
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表達(dá)式(Expression bodies on property-like function members)

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

10.在方法成員上使用Lambda表達(dá)式

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

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

相關(guān)文章

  • C#簡(jiǎn)單輸出日歷的方法

    C#簡(jiǎn)單輸出日歷的方法

    這篇文章主要介紹了C#簡(jiǎn)單輸出日歷的方法,涉及C#針對(duì)日期與時(shí)間的簡(jiǎn)單操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • c#使用xamarin編寫撥打電話程序

    c#使用xamarin編寫撥打電話程序

    Xamarin是一個(gè)行動(dòng)App開發(fā)平臺(tái),提供跨平臺(tái)開發(fā)能力,開發(fā)人員透過(guò)Xamarin開發(fā)工具與程序語(yǔ)言,即可開發(fā)出iOS、Android 與Windows 等平臺(tái)的原生(Native) App 應(yīng)用程序,不須個(gè)別使用各平臺(tái)的開發(fā)工具與程序語(yǔ)言,
    2015-05-05
  • C#實(shí)現(xiàn)網(wǎng)絡(luò)通信共享庫(kù)NetShare的使用示例

    C#實(shí)現(xiàn)網(wǎng)絡(luò)通信共享庫(kù)NetShare的使用示例

    本文主要介紹了C#實(shí)現(xiàn)網(wǎng)絡(luò)通信共享庫(kù)NetShare,網(wǎng)絡(luò)通信共享庫(kù)NetShare用于保證客戶端與服務(wù)器通信數(shù)據(jù)包的規(guī)范和統(tǒng)一,感興趣的可以了解一下
    2023-11-11
  • C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問題實(shí)例

    C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問題實(shí)例

    這篇文章主要介紹了C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問題,簡(jiǎn)單介紹了生成器模式的概念、功能并結(jié)合具體實(shí)例形式分析了C#生成器模式解決配電腦問題的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • c#基礎(chǔ)知識(shí)---委托,匿名函數(shù),lambda

    c#基礎(chǔ)知識(shí)---委托,匿名函數(shù),lambda

    這篇文章主要介紹了c# 委托,匿名函數(shù),lambda的相關(guān)知識(shí),文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • C#使用StructLayout特性來(lái)控制內(nèi)存結(jié)構(gòu)的操作代碼

    C#使用StructLayout特性來(lái)控制內(nèi)存結(jié)構(gòu)的操作代碼

    在C#中,內(nèi)存布局對(duì)于性能優(yōu)化和與非托管代碼的互操作性至關(guān)重要,StructLayout特性允許開發(fā)者控制結(jié)構(gòu)在內(nèi)存中的布局方式,本文給大家介紹了C#使用StructLayout特性來(lái)控制內(nèi)存結(jié)構(gòu)的操作,需要的朋友可以參考下
    2024-10-10
  • C# try catch代碼塊不起效果的解決方法

    C# try catch代碼塊不起效果的解決方法

    本文主要介紹了C# try catch代碼塊不起效果的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 基于C#?實(shí)現(xiàn)劉謙春晚魔術(shù)(示例代碼)

    基于C#?實(shí)現(xiàn)劉謙春晚魔術(shù)(示例代碼)

    劉謙春晚魔術(shù)是一個(gè)讓人嘆為觀止的魔術(shù)表演,其中涉及到了數(shù)學(xué)、編程和創(chuàng)意的結(jié)合,看了春晚魔術(shù)的朋友們,是不是好奇春晚劉謙的魔術(shù)是怎么變的,本文分享C#?實(shí)現(xiàn)劉謙春晚魔術(shù)示例代碼,一起看看吧
    2024-02-02
  • VS2010寫的程序在自己電腦可以運(yùn)行、其他電腦上不能運(yùn)行的解決方案

    VS2010寫的程序在自己電腦可以運(yùn)行、其他電腦上不能運(yùn)行的解決方案

    自己用Visual Studio 2010 旗艦版寫了一個(gè)軟件,在自己電腦上運(yùn)行完全沒有問題,但是拷貝到其他人電腦上之后不管雙擊還是以管理身份運(yùn)行,均沒有反應(yīng),進(jìn)程管理器中相關(guān)進(jìn)程也只是一閃而過(guò)
    2013-04-04
  • C#飛機(jī)打字游戲的代碼示例(winform版)

    C#飛機(jī)打字游戲的代碼示例(winform版)

    這篇文章主要介紹了C#飛機(jī)打字游戲的代碼示例(winform版),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

任丘市| 甘泉县| 宣化县| 乌兰县| 尚志市| 明水县| 苏尼特左旗| 正安县| 昭觉县| 晋江市| 宁波市| 阿鲁科尔沁旗| 兴山县| 山东| 囊谦县| 海阳市| 房产| 刚察县| 应城市| 大安市| 略阳县| 开原市| 绩溪县| 静宁县| 额济纳旗| 渭南市| 铜陵市| 治县。| 嘉峪关市| 徐汇区| 垦利县| 漠河县| 剑河县| 汾西县| 肃北| 长岛县| 青冈县| 大庆市| 大兴区| 迭部县| 泌阳县|