在 C 中定義乙個真正唯讀的 List

2021-09-06 17:39:08 字數 972 閱讀 6014

c# 中的 readonly 關鍵字表示類中的字段只允許在定義時候或者構造方法中初始化。普通型別的資料完全可以達到預期的效果,但是在物件或者列表中,要想達到唯讀的效果,只用乙個 readonly 關鍵字是不可以的。當你把乙個 list 用 readonly 修飾,在其他類中仍然可以使用 add,remove 方法來改變它。但是可能你想要的唯讀屬性是:只有在當前類中修改這個列表的 item,才不想被其他類做任何修改!

下面這個示例就是用 readonly 關鍵字修飾的乙個 list,它的內容專案仍然可以在其他類中新增或刪除:

就算封裝成唯讀屬性,仍然可以在其他類中操作:

不過你可以將屬性的型別改為 ienumerable,這樣就可以達到想要的效果。因為 ienumerable類沒有 add, remove 方法,list類繼承 ienumerable類,在 list類中新增的 add, remove 等方法:

如果你想建立乙個完全唯讀的屬性,就算在當前類中都不可以修改它的 item,你可以使用 readonlycollection:

在 .net 4.5 中,list繼承了 ireadonlylist和 ireadonlycollection,給了我們一種更簡單的寫法,同樣可以達到上述效果:

在sql server 如何建立乙個唯讀賬戶

1 進入sqlserver management studio 2 選擇安全性 登入名 右鍵新建登入名 3 在常規裡輸入使用者名稱和密碼 4 在 使用者對映 裡 對映到此登入名的使用者 選擇該使用者可以操作的資料庫 5 在 資料庫角色成員身份 裡選擇 db datareader 6 這樣乙個唯讀使用...

C 中如何定義乙個模板

如果兩個值相等,返回0,如果v1小返回 1,如果v2小返回1 int compare const string v1,const string v2 缺點 如果對每種希望比較的型別都不得不重複定義完全一樣的函式體,是非常繁瑣且容易出錯的。乙個函式模板就是乙個公式,可用來生成針對特定型別的函式版本。t...

建立乙個顯示所有預定義WPF顏色的ListBox

原文 creating a listbox that shows all predefined wpf colors 在wpf中,您可以使用colors類訪問一系列預定義顏色,這些顏色定義為colors類的靜態屬性。您只需使用顏色名稱引用每種顏色。作為參考,這裡是乙個小應用程式,顯示listbox中...