C#7.2 新增功能

C# 7.2 又是一個單點版本,它增添了大量有用的功能。 此版本的一項主要功能是避免沒必要要的複製或分配,進而更有效地處理值類型。html

C# 7.2 使用語言版本選擇配置元素來選擇編譯器語言版本。數組

01 安全高效的代碼的加強功能

利用 7.2 中引入的語言功能,可在使用引用語義時處理值類型。 它們旨在儘可能減小值類型的複製,而不形成與引用類型使用相關的內存分配,進而提高性能。 功能包括:安全

  • 針對實參的 in 修飾符,指定形參經過引用傳遞,但不經過調用方法修改。 將 in 修飾符添加到參數是源兼容的更改
  • 針對方法返回的 ref readonly 修飾符,指示方法經過引用返回其值,但不容許寫入該對象。 若是向某個值賦予返回值,則添加 ref readonly 修飾符是源兼容的更改。 將 readonly 修飾符添加到現有的 ref 返回語句是不兼容的更改。 它要求調用方更新 ref 本地變量的聲明以包含 readonly 修飾符。
  • readonly struct 聲明,指示結構不可變,且應做爲 in 參數傳遞到其成員方法。 將 readonly 修飾符添加到現有的結構聲明是二進制兼容的更改
  • ref struct 聲明,指示結構類型直接訪問託管的內存,且必須始終分配有堆棧。 將 ref 修飾符添加到現有 struct 聲明是不兼容的更改。 ref struct 不能是類的成員,也不能用於可能在堆上分配的其餘位置。

能夠在編寫安全高效的代碼中詳細瞭解全部這些更改。ide

02 非尾隨命名參數

方法調用現可以使用位於位置參數前面的命名參數(若這些命名參數的位置正確)。 有關詳細信息,請參閱命名參數和可選參數性能

03 數值文字中的前導下劃線

C# 7.0 中實現了對數字分隔符的支持,但這不容許文字值的第一個字符是 _。 十六進制文本和二進制文件現能夠 _ 開頭。例如: ui

int binaryValue = 0b_0101_0101;
04 private protected 訪問修飾符

新的複合訪問修飾符:private protected 指示可經過包含同一程序集中聲明的類或派生類來訪問成員。 雖然 protected internal 容許經過同一程序集中的類或派生類進行訪問,但 private protected 限制對同一程序集中聲明的派生類的訪問。spa

有關詳細信息,請參閱語言參考中的訪問修飾符code

05 條件 ref 表達式
條件表達式可能生成 ref 結果而不是值。 例如,你將編寫如下內容以檢索對兩個數組之一中第一個元素的引用:
ref var r = ref (arr != null ? ref arr[0] : ref otherArr[0]);

變量 r 是對 arr 或 otherArr 中第一個值的引用。htm

有關詳細信息,請參閱語言參考中的條件運算符 (?:)對象

 

相關文章
相關標籤/搜索