深拷貝與淺拷貝---《編寫高質量程式碼改善C#程式的157個建議》筆記
1.定義:
淺拷貝:將物件所有欄位複製到新物件(副本)中,其中,值型別的值被複制到副本中之後,在副本中的修改不會影響源物件的值;而引用型別欄位被複制到副本中的是引用型別的引用,而不是引用的物件,在副本中對引用型別欄位的修改會影響到源物件本身。
深拷貝:將物件中的所有欄位複製到新物件中,不過無論是值型別還是引用型別都會被重新建立並賦值,對於副本的修改不會影響到源物件本身。
2.注意:
無論淺拷貝還是深拷貝,都建議使用型別繼承ICloneable介面的方式明確告訴呼叫者;該型別可以被拷貝;ICloneable介面只提供一個申明為Clone()的方法,可根據需求在Clone()方法中實現深拷貝或者淺拷貝。
一個簡單淺拷貝程式碼如下:
理論上string是引用型別,但由於該引用的特殊性,Object.MemberwiseClone方法仍舊為其建立副本,也就是說淺拷貝過程中,我們應該講字串看做是值型別。
3
4.
相關推薦
深拷貝與淺拷貝---《編寫高質量程式碼改善C#程式的157個建議》筆記
1.定義: 淺拷貝:將物件所有欄位複製到新物件(副本)中,其中,值型別的值被複制到副本中之後,在副本中的修改不會影響源物件的值;而引用型別欄位被複制到副本中的是引用型別的引用,而不是引用的物件,在副本中對引用型別欄位的修改會影響到源物件本身。 深拷貝:將物件中的所有欄位複製到新物件中,不過無
編寫高質量程式碼改善C#程式的157個建議——導航開篇
為什麼要來看這本書 寫此書的作者在書中也有明確的記錄。作者一直在思考一個問題:就是到底什麼樣的程式設計書籍能夠幫助入門者快速進階?所謂“入門者”指的是已經可以使用一門語言來編寫程式,但是不太明白如何編寫高質量程式碼的人。作者回憶自己開發生涯的入門階段發現,那時候常常被以下三類問題所困擾。
讀書筆記之《編寫高質量程式碼:改善C#程式的157個建議》
最近,在閱讀書籍《編寫高質量程式碼:改善C#程式的157個建議》,感覺寫得很不錯,特將其中的建議整理了一下,待以後隨時檢視。 現只羅列了其中的部分建議,因為書籍還沒有閱讀完,會慢慢的完善補充。 1 正確操作字串 1.1 確保儘量少的裝箱 在使用其他值引用型別到字串的轉換並
編寫高質量程式碼改善Python程式的很多建議
基礎語法 有節制地使用 from...import 語句 Python 提供三種方式來引入外部模組:import語句、from...import語句以及__import__函式,其中__import__函式顯式地將模組的名稱作為字串傳遞並賦值給名稱空間的變數。 使用import需要注
讀讀《編寫高質量程式碼:改善Java程式的151條建議》
這本書可以作為平時寫程式碼的一個參考書,這本書以我個人讀的經驗看來,最好是通過平時程式碼驅動的方式來讀,這樣吸收的快,也讀的快。 這本書主要講什麼,我自己用了個思維導圖概述: 根據這種導圖可知,主要講的就是Java語法、JDK API、程式效能、開源工具和框架、程式設計風格和程式設計思
java學習-排序及加密簽名時資料排序方式 十大經典排序演算法(動圖演示) Java Comparator字元排序(數字、字母、中文混合排序) 編寫高質量程式碼:改善Java程式的151個建議(第5章:陣列和集合___建議70~74)
排序有兩種 1. 類實現comparable介面呼叫List.sort(null)或Collections.sort(List<T>)方法進行排序 jdk內建的基本型別包裝類等都實現了Comparablel介面,預設是使用自然排序,即升序排序 自定義類實現Comparable介面必須要實現c
《編寫高質量程式碼 改善python程式的91個建議》讀書筆記
前言: python 一切皆物件,此為前提。 一、關於函式:不要在函式中定義可變物件為預設值,使用異常替換返回錯誤,保證通過單元測試。python函式傳遞的是物件的引用。在類的初始化方法裡,引數的預設值應該為None,因為預設引數在函式被呼叫時候僅僅被評估一次。 二、編碼。 最開始使用ASC
編寫高質量程式碼改善Java程式的151個建議
(Lock類(顯式鎖)和synchronized關鍵字(內部鎖)用在程式碼塊的併發性和記憶體上時的語義是一樣的,都是保持程式碼塊同時只有一個執行緒具有執行權。顯式鎖的鎖定和釋放必須在一個try...finally塊中,這是為了確保即使出現執行期異常也能正常釋放鎖,保證其他執行緒能夠順利執行。Lock鎖為什麼不
編寫高質量程式碼 改善Python程式的91個建議
建議1:理解Pythonic概念 建議2:編寫Pythonic程式碼 建議3:理解Python與C語言的不同之處 建議4:在程式碼中適當添加註釋 建議5:通過適當新增空行使程式碼佈局更為優雅、合理 建議6:編寫函式的4個原則 建議7:將常量集中到一個檔案 建議8:利用assert語句來發現問題 建議9:資料
編寫高質量程式碼:改善Java程式的151個建議(第3章:類、物件及方法___建議31~40)
書讀的多而不思考,你會覺得自己知道的很多。 書讀的多而思考,你會覺得自己不懂的越來越多。 -----江疏影 在面向
編寫高質量程式碼:改善Java程式的151個建議(第5章:陣列和集合___建議70~74)
本節內容有些吹毛求疵、晦澀難懂! 建議70:子列表只是原列表的一個檢視 List介面提供了subList方法,其作用是返回一個
編寫高質量程式碼:改善Java程式的151個建議(第6章:列舉和註解___建議83~87)
列舉和註解都是在Java1.5中引入的,列舉改變了常量的宣告方式,註解耦合了資料和程式碼。 建議83:推薦使用列舉定義常量 常
編寫高質量程式碼:改善Java程式的151個建議(第7章:泛型和反射___建議93~97)
我們最大的弱點在於放棄。成功的必然之路就是不斷的重來一次。 --達爾文 建議93:Java的泛型是可以擦除的 建議94
編寫高質量程式碼:改善Java程式的151個建議(第7章:泛型和反射___建議101~109)
我命由我不由天 --哪吒 建議101:注意Class類的特殊性 建議102:適時選擇getDeclaredXXX和ge
編寫高質量程式碼:改善Java程式的151個建議(第8章:異常___建議110~113)
不管人類的思維有多麼縝密,也存在“智者千慮必有一失”的缺憾。無論計算機技術怎麼發展,也不可能窮盡所有的場景,這個世界是不完美的,是
編寫高質量程式碼:改善Java程式的151個建議(第5章:陣列和集合___建議60~66)
如果你浪費了自己的年齡,那是挺可悲的。因為你的青春只能持續一點兒時間——很短的一點兒時間。 —— 王爾德 建議6
編寫高質量程式碼:改善Java程式的151個建議(第4章:字串___建議52~59)
生活不只眼前的苟且。還有讀不懂的詩和到不了的遠方。 --閆妮 建議52:推薦使用String直接賦值 建議53:注意方
Github即將破百萬的PDF:編寫高質量程式碼改善JAVA程式的151個建議
在通往"Java技術殿堂"的路上,本書將為你指點迷津!內容全部由Java編碼的最佳 實踐組成,從語法、程式設計和架構、工具和框架、編碼風格和程式設計思想等五大方面,對 Java程式設計師遇到的各種棘手的疑難問題給出了經驗性的解決方案,為Java程式設計師如何編寫 高質量的Java程式碼提出了151條極為
C#程式編寫高質量程式碼改善的157個建議[4-9]
前言 本文首先亦同步到http://www.cnblogs.com/aehyok/p/3624579.html。本文主要來學習記錄一下內容: 建議4、TryParse比Parse好 建議5、使用int?來確保值型別也可以為null 建議6、區別readonly和const的使用方法 建議
C#深度學習の----深拷貝與淺拷貝
chan 深度 保存 交流 typeof sta 二進制 object with 本人在進行編程的時候遇到一個問題,要對一個綁定的依賴屬性進行賦值,改變屬性中的某一部分,綁定的目標上的所有值都發生了變化,著並不是我想要的,由此引出深淺拷貝的問題。(請加群交流:4352266