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