1. 程式人生 > 實用技巧 >C#6.0

C#6.0

C#6.0

匯入靜態類

我們可以使用using static 名稱空間.靜態類來匯入要使用的靜態類,後續使用時就可以像本地類一樣的使用了,例如:

//匯入Math靜態類
using static System.Math;

//使用時就不需要再指定名稱空間了,可以直接類名.靜態方法()來使用
int n = (int)Math.Ceiling(0.01m);

異常過濾器

異常過濾器可以讓你在catch塊執行之前先進行一個條件判斷。

try
{
    using (HttpClient client = new HttpClient())
    {
        var response = await client.GetStringAsync("https://i.cnblogs.com/tags");
        Console.WriteLine(response);
    }
}
catch (System.Net.Http.HttpRequestException ex) when (ex.Message.Contains("401"))
{
    Console.WriteLine(ex.Message);
}

自動屬性初始化

C#6.0之前是沒辦法給自動屬性進行初始化,只能在物件建立成功後手動賦值。現在可以直接在自動屬性後面加上初始值或初始化表示式。

private static int _defaultGender = 1;

//使用字面量設定初始值
public string Name { get; set; } = "張三";
//使用初始化表示式設定初始值
public string Gender { get; set; } = _defaultGender == 1 ? "男" : "女";

Null條件運算子

Null條件運算子使null

檢查更輕鬆、更流暢。將成員訪問.替換為?.

Null合併運算子使結果為null時可以設定預設值。使用??

//如果person是null,則將變數name賦值為null,否則將Name的屬性值賦值給該變數。
string name=person?.Name;

//如果姓名為null時則預設姓名為張三
string name = person?.Name ?? "張三";

字串內插

字串內插功能可以在字串中嵌入表示式。使用$作為字串的開頭,並使用{}之間的表示式來計算結果。

string name = "張三";
string summary = $"hi,大家好,我叫:{name}..";

字串內插就是語法糖,內部實際上是使用了string.Format方法。

nameof表示式

nameof表示式可生成變數、型別或成員的名稱作為字串常量。

nameof表示式在編譯時進行求值,在執行時無效。

string name = "張三";
string summary = $"{nameof(name)}={name}";
//output:name=張三

Expression-bodied函式成員

之前只讀屬性和方法都是放在一個語句塊中的,現在可以改成Expression-bodied成員。

//只讀屬性
public string Name => "張三";
//方法
public void Hello() => Console.WriteLine("hello world");