C# 8 新特性 - 只读struct成员
生活随笔
收集整理的這篇文章主要介紹了
C# 8 新特性 - 只读struct成员
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從C#?8開始,我們可以在struct的成員上使用readonly修飾符。?
為struct的成員添加readonly修飾符就表示告訴編譯器和開發者該成員不可以修改struct的狀態。?
?
看下面這個例子:?
這里的ToString()方法不會修改Point這個struct的狀態,所以我們可以在該方法上添加readonly修飾符來表示其只讀:?
但是這里會出現警告,因為?ToString?訪問了未標記為?readonly?的?Distance?屬性。也就是需要創建防御性副本時,編譯器會發出警告。?
由于Distance屬性不會修改狀態,所以可以在它前邊加上readonly修飾符以修復此警告:?
?
請注意,readonly?修飾符對于只讀屬性是必須要添加的。?編譯器會假設?get?訪問器可以修改狀態;所以必須顯式聲明?readonly。?
但是自動實現的屬性則是一個例外;編譯器將所有自動實現的?Getter?視為?readonly,因此,此處無需向?X?和?Y?屬性添加?readonly?修飾符。?
?
如果我在該struct里面再添加一個修改狀態的方法:?
由于該方法確實修改了struct的狀態,所以如果在該方法上再加上readonly修飾符的話,編譯器就會報錯。?
?
而如果我把readonly修飾符去掉的話,那么就不會報錯了:?
總結
以上是生活随笔為你收集整理的C# 8 新特性 - 只读struct成员的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软备战 RPA 市场,Power Pl
- 下一篇: 推荐一款神器-VBAC#代码编辑管理器