C#7.1 新增功能

C# 7.1 是 C# 語言的第一個點版本(更新版本)。 它標誌着該語言發佈節奏的加速。 理想狀況下,能夠在每一個新功能準備就緒時更快推出新功能。 C# 7.1 增長了將編譯器配置爲匹配特定語言版本的功能。 從而能夠分別制定有關升級語言版本的決策和有關升級工具的決策。html

C# 7.1 增長了語言版本選擇配置元素、三個新的語言功能和新的編譯器行爲。express

最後,編譯器有 -refout 和 -refonly 兩個選項,可用於控制引用程序集生成編程

若要使用單點版本中的最新功能,須要配置編譯器語言版本並選擇版本。api

01 異步 main 方法
異步 Main 方法使你可以在 Main 方法中使用 await 關鍵字。 在過去,須要編寫:
static int Main()
{
    return DoAsyncWork().GetAwaiter().GetResult();
}

如今,能夠編寫:異步

static async Task<int> Main()
{
// DoAsyncWork,包括其等待表達式: return await DoAsyncWork(); }

若是程序不返回退出代碼,能夠聲明返回 Task 的 Main 方法:async

static async Task Main()
{
    await SomeAsyncMethod();
}

如需瞭解更多詳情,能夠閱讀編程指南中的異步 Main 一文。ide

02 默認文本表達式
默認文本表達式是針對默認值表達式的一項加強功能。 這些表達式將變量初始化爲默認值。 過去會這麼編寫:
Func<string, bool> whereClause = default(Func<string, bool>);
如今,能夠省略掉初始化右側的類型:
Func<string, bool> whereClause = default;

若要詳細瞭解此加強功能,能夠參閱 C# 編程指南中的默認值表達式一文。工具

此加強功能也會更改某些default 關鍵字 的分析規則。ui

03 推斷元組元素名稱
此功能是對 C# 7.0 中引入的元組功能一次小型加強。 在初始化元組時,許多時候,賦值操做右側的變量名與用於元組元素的名稱相同:
int count = 5;
string label = "Colors used in the map";
var pair = (count: count, label: label);

元組元素的名稱可經過在 C# 7.1 中初始化元組時使用的變量進行推斷:spa

int count = 5;
string label = "Colors used in the map";
var pair = (count, label); // element names are "count" and "label"

若要詳細瞭解此功能,能夠參閱元組一文。

04 泛型類型參數的模式匹配
自 C# 7.1 起,is 和 switch 類型模式的模式表達式的類型可能爲泛型類型參數。 這可能在檢查 struct 或 class 類型且要避免裝箱時最有用。
05 引用程序集生成
有兩個新編譯器選項可生成僅引用程序集:-refout 和 -refonly 。 連接的文章詳細介紹了這些選項和引用程序集。
 
相關文章
相關標籤/搜索