簡體   English   中英

C#類和只讀成員

[英]C# class and readonly members

在C#中編寫一個類時,如果只將它們分配給構造函數並且不會在類的其他地方進行更改,那么將所有私有成員變量標記為私有只讀是一個好主意嗎? 或者這有點矯枉過正?

是的,我個人認為這是一個好主意。 我嘗試盡可能保持類型不可變,並且readonly一個變量是一個很好的開始 當然,這並非全部和最終 - 如果該變量是可變的(例如StringBuilder或數組),那么它實際上並沒有那么多幫助。 我仍然將變量設為只讀,但顯然我不想改變變量本身的值 - 並且防止自己在同一個類的其他地方意外地這樣做,可能是幾個月或幾年之后。

是的,這是readonly具體指出的。 如果您已經知道(或者至少可以假設)您不打算將其分配給其他任何地方,那么將其標記為readonly是一個好主意。 畢竟, 刪除 readonly比以后添加它更容易。

哇這是一個很好的問題,而且純粹是用意見來回答。 我的意見是我總是只為變量創建屬性。 一個例子如下。

private int _myInt;
private int myInt {get{return _myInt;}}

是的 - 您不會遇到由其他開發人員編寫的某些代碼修改其值的問題,這些代碼不知道它們應該是只讀的。

Readon在通過構造函數傳遞服務引用的情況下非常有意義,即

public class MyViewModel { private readonly MyContext context; public MyViewModel(MyContext context) { this.context = context; } }

你顯然不希望你的上下文被另一個上下文覆蓋,因為你可以擁有很多依賴於類中特定服務的東西。 如果它是構造函數參數,通常意味着您在該特定服務或對象上使用RELY來創建和保持對象的有效狀態。 所以readonly就是一個很好的指標。 在屬性上設置私有意味着你不能在類之外更改它,readonly是一個額外的約束,它使事情更安全和可理解。

如果我只是初始化一次變量並且從不寫入它,我會把它變成const。

http://en.csharp-online.net/const,_static_and_readonly

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM