c# 7.2 又是乙個單點版本,它增添了大量有用的功能。 此版本的一項主要功能是避免不必要的複製或分配,進而更有效地處理值型別。
c# 7.2 使用語言版本選擇配置元素來選擇編譯器語言版本。
01 安全高效的**的增強功能
利用 7.2 中引入的語言功能,可在使用引用語義時處理值型別。 它們旨在儘量減少值型別的複製,而不造成與引用型別使用相關的記憶體分配,進而提公升效能。 功能包括:
可以在編寫安全高效的**中詳細了解所有這些更改。
02 非尾隨命名引數
方法呼叫現可使用位於位置引數前面的命名引數(若這些命名引數的位置正確)。 有關詳細資訊,請參閱命名引數和可選引數。
03 數值文字中的前導下劃線
c# 7.0 中實現了對數字分隔符的支援,但這不允許文字值的第乙個字元是_
。 十六進製制文字和二進位制檔案現可以_
開頭。
例如:
int binaryvalue = 0b_0101_0101;
04 private protected 訪問修飾符
新的復合訪問修飾符:private protected
指示可通過包含同一程式集中宣告的類或派生類來訪問成員。 雖然protected internal
允許通過同一程式集中的類或派生類進行訪問,但private protected
限制對同一程式集中宣告的派生類的訪問。
有關詳細資訊,請參閱語言參考中的訪問修飾符。
05 條件 ref 表示式
條件表示式可能生成 ref 結果而不是值。 例如,你將編寫以下內容以檢索對兩個陣列之一中第乙個元素的引用:
refvar r = ref (arr != null ? ref arr[0] : ref otherarr[0]);
變數r
是對arr
或otherarr
中第乙個值的引用。
有關詳細資訊,請參閱語言參考中的條件運算子 (?:)。
C 7 2特性 Span介紹
1.2.3.net core 2.1 和 c 7.2 帶來了 span 的原生支援,原本需要使用不安全 操作的記憶體塊現在可以使用安全的方式來完成。此前在效能和穩定性上需要有所取捨,而現在可以兼得了。span t 結構體,值型別 相當於c 中的指標,它是一段連續記憶體的引用,也就是一段連續記憶體的首...
C 7 2 程式儲存問題(PTA)
題目描述 設有n 個程式要存放在長度為l的磁帶上。程式i存放在磁帶上的長度是 li,1 i n。程式儲存問題要求確定這n 個程式在磁帶上的乙個儲存方案,使得能夠在磁帶上儲存盡可能多的程式。對於給定的n個程式存放在磁帶上的長度,計算磁帶上最多可以儲存的程式數。輸入格式 第一行是2 個正整數,分別表示檔...
解決C 7 2中的結構體效能問題
在某些使用了readonly關鍵字的情況下,c 編譯器會建立出結構體的防禦副本。雖然這個問題已經眾所周知並被記錄下來了,但仍然值得重新審視,因為它與c 7.2的幾個特性有關。in和ref readonly關鍵字的使用讓這個問題出現得更頻繁,而readonly結構體提供了一種解決方法。c 中的結構體通...