C# 7.1 是 C# 語言的第一個點版本(更新版本)。 它標志着該語言發布節奏的加速。 理想情況下,可以在每個新功能准備就緒時更快推出新功能。 C# 7.1 增加了將編譯器配置為匹配特定語言版本的功能。 從而可以分別制定有關升級語言版本的決策和有關升級工具的決策。
C# 7.1 增加了語言版本選擇配置元素、三個新的語言功能和新的編譯器行為。
最后,編譯器有 -refout
和 -refonly
兩個選項,可用於控制引用程序集生成。
若要使用單點版本中的最新功能,需要配置編譯器語言版本並選擇版本。
異步 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 一文。
默認文本表達式是針對默認值表達式的一項增強功能。 這些表達式將變量初始化為默認值。 過去會這么編寫:
Func<string, bool> whereClause = default(Func<string, bool>);
現在,可以省略掉初始化右側的類型:
Func<string, bool> whereClause = default;
若要詳細了解此增強功能,可以參閱 C# 編程指南中的默認值表達式一文。
此增強功能也會更改某些default 關鍵字 的分析規則。
此功能是對 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"
若要詳細了解此功能,可以參閱元組一文。
自 C# 7.1 起,
is
和 switch
類型模式的模式表達式的類型可能為泛型類型參數。 這可能在檢查 struct
或 class
類型且要避免裝箱時最有用。