C# 7.2 又是一個單點版本,它增添了大量有用的功能。 此版本的一項主要功能是避免沒必要要的複製或分配,進而更有效地處理值類型。html
C# 7.2 使用語言版本選擇配置元素來選擇編譯器語言版本。數組
利用 7.2 中引入的語言功能,可在使用引用語義時處理值類型。 它們旨在儘可能減小值類型的複製,而不形成與引用類型使用相關的內存分配,進而提高性能。 功能包括:安全
in
修飾符,指定形參經過引用傳遞,但不經過調用方法修改。 將 in
修飾符添加到參數是源兼容的更改。ref readonly
修飾符,指示方法經過引用返回其值,但不容許寫入該對象。 若是向某個值賦予返回值,則添加 ref readonly
修飾符是源兼容的更改。 將 readonly
修飾符添加到現有的 ref
返回語句是不兼容的更改。 它要求調用方更新 ref
本地變量的聲明以包含 readonly
修飾符。readonly struct
聲明,指示結構不可變,且應做爲 in
參數傳遞到其成員方法。 將 readonly
修飾符添加到現有的結構聲明是二進制兼容的更改。ref struct
聲明,指示結構類型直接訪問託管的內存,且必須始終分配有堆棧。 將 ref
修飾符添加到現有 struct
聲明是不兼容的更改。 ref struct
不能是類的成員,也不能用於可能在堆上分配的其餘位置。能夠在編寫安全高效的代碼中詳細瞭解全部這些更改。ide
方法調用現可以使用位於位置參數前面的命名參數(若這些命名參數的位置正確)。 有關詳細信息,請參閱命名參數和可選參數。性能
C# 7.0 中實現了對數字分隔符的支持,但這不容許文字值的第一個字符是 _
。 十六進制文本和二進制文件現能夠 _
開頭。例如: ui
int binaryValue = 0b_0101_0101;
新的複合訪問修飾符:private protected
指示可經過包含同一程序集中聲明的類或派生類來訪問成員。 雖然 protected internal
容許經過同一程序集中的類或派生類進行訪問,但 private protected
限制對同一程序集中聲明的派生類的訪問。spa
有關詳細信息,請參閱語言參考中的訪問修飾符。code
ref var r = ref (arr != null ? ref arr[0] : ref otherArr[0]);
變量 r
是對 arr
或 otherArr
中第一個值的引用。htm
有關詳細信息,請參閱語言參考中的條件運算符 (?:)。對象