C#7.1 新增功能


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

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

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

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

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

現在,可以編寫:

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

如果程序不返回退出代碼,可以聲明返回 Task 的 Main 方法:

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

如需了解更多詳情,可以閱讀編程指南中的異步 Main 一文。

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

若要詳細了解此增強功能,可以參閱 C# 編程指南中的默認值表達式一文。

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

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

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

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 。 鏈接的文章詳細介紹了這些選項和引用程序集。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM