看板 C_Sharp 關於我們 聯絡資訊
我知道C#有const這個關鍵字 但是像Bitmap這樣的物件就無法這麼用 如果我寫了一個函式如下 public Bitmap MakeFixedImage(){...} 我該如何禁止取得圖片的人去修改這張圖? 還是只能註解說這張圖有其他地方也在用 拜託別隨便修改 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.229.78.198 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1587716610.A.756.html
sirius65482: 你是有個原始的Bitmap放進MakeFixedImage()改 04/24 16:38
sirius65482: 不想讓別人動到原始的那個Bitmap?? 04/24 16:39
類似 因為我會從其他地方借Bitmap來用 而傳出去的image未必一定會被修改(例如單純塞給pictureBox做顯示) 想修改的話應該自己copy一份 var newOne = new Bitmap(MakeFixedImage()); 我是希望能從程式碼就確保不會被修改啦 ※ 編輯: eye5002003 (36.229.78.198 臺灣), 04/24/2020 17:02:36
kobe8112: 你回傳一個複製的複本啊 04/24 16:58
我的情況一直生複本的話開銷太大(記憶體用量也會漲不停) ※ 編輯: eye5002003 (36.229.78.198 臺灣), 04/24/2020 17:04:32
kobe8112: 每次複製的複本都指向同一個參考呢? 04/24 17:12
eye5002003: 所謂參考就一定是同一塊記憶體啊 04/24 17:31
james732: 內部資料設private並且只提供get相關但不提供set? 04/24 17:54
james732: 另外不確定readonly這個關鍵字對你有沒有幫助 04/24 17:55
kobe8112: 我是指改成不回傳,僅賦值到同一個全域變數, 04/24 18:34
kobe8112: 嗯...本質還是一樣,不過GC後記憶體就會釋放了吧 04/24 18:52
vi000246: 同j大 把圖片設成private 用一個公開的物件getter指向pr 04/24 19:37
vi000246: ivate物件 04/24 19:37
eye5002003: 看來也只能這樣了,感謝各位! 04/26 10:10