看板 C_Sharp 關於我們 聯絡資訊
※ 引述《euleramon (X'mas)》之銘言: : 如果降寫 image2 = new Bitmap((Image)image1); 也不會有exception.. : 我剛回去檢查一下,發現好像是降的原因: : 如果寫成 image2 = (Bitmap)image1.Clone(); : 然後再將image1的fileStream關掉:myImageFileNameStream.Close(); : 如果再access影像image2,就會產生降的例外訊息 : "Cannot access a closed file" : 所以我感覺 .net 裡的 : Class a = object.Clone() : 好像並不能完全取代 : Class a = new Class(object) : --- : 不曉得對不對".. 不過還是分享看看心得 這個結論有點離譜(汗...) 因為你使用了filestream來開啟檔案, 在image1的Clone同時也把這個file handle 複製了一份到image2. 這種reference的copy一但handle被close掉也連帶會影響到image2 有書的話可以查查reference type, ICloneable, MemberwiseClone ICloneable不是用來取代constructor的, 在使用它的同時必須了解其侷限. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.146.44
euleramon:原來如此 看來我還有很多要學習.. 感謝分享 01/01 09:35