我一直在尋找一個內置的屬性來指定一個類型是不可變的,我發現只有 System.ComponentModel.ImmutableObjectAttribute。ImmutableObjectAttribute是如何使用的?
使用反射器,我檢查它的使用位置,似乎唯一使用它的公共類是System.Drawing.Image ... WTF?它可以用於字符串,int或任何基本類型,但Image肯定是而不是不可變,有很多方法可以改變其內部狀態(例如使用Graphics或Bitmap.SetPixel方法)。
因此,BCL中唯一明確聲明爲不可變的類,爲 mutable!或者我錯過了什麼?
「不是該對象本身是不可變的」 - 文檔指定該屬性「指定對象沒有能夠被編輯的子屬性」。看來你所說的與文檔相矛盾。你能解釋一下嗎? – MasterMastic 2013-05-23 01:57:28
@Ken,這個屬性意味着當使用*屬性編輯器*時,對象沒有要編輯的子屬性*,就像Visual Studio的表單設計器中的屬性一樣。不管這個屬性如何,這些屬性仍可以從代碼中設置或修改。根據當前的文檔,我的重點是:「這個屬性通常用於*屬性窗口*中,以確定是否將可擴展對象呈現爲只讀,因此,此屬性僅在設計時使用*。 「 – 2013-05-23 08:02:52