概述:System.Object類是.NET Framework類庫中所有類的基類
構(gòu)造函數(shù):
public Object()
說明:通過子類的構(gòu)造函數(shù)來調(diào)用,但是也能直接使用它來生產(chǎn)Object對(duì)象。
方法:
public virtual bool Equals(Object obj)
判斷對(duì)象obj是否與當(dāng)前對(duì)象相對(duì)。
此方法是一個(gè)virtual方法,一般在子類中應(yīng)該重寫該方法。
該方法根據(jù)對(duì)象的類型不同,分為以下幾種情況:
1:如果對(duì)象是簡(jiǎn)單值類型,比如原生數(shù)據(jù)類型,則相等的定義為:類型相同且值相等。
2:對(duì)于結(jié)構(gòu)類型,相等意味著結(jié)構(gòu)內(nèi)部的字段的值要相等。注意:對(duì)于結(jié)構(gòu),相等性判斷是判斷結(jié)構(gòu)內(nèi)的字段是否相等。
3:對(duì)于引用類型,該方法判斷兩個(gè)對(duì)象是否是同一個(gè)對(duì)象,實(shí)際上就是在方法內(nèi)部調(diào)用了ReferenceEqual方法,因此,對(duì)于引用類型的相等性判斷,一般應(yīng)該在子類中重寫該方法。
下表中給出了幾種類型會(huì)默認(rèn)調(diào)用的Equals方法
類型 | 默認(rèn)調(diào)用的Equals方法 | 說明 |
Object類的子類 | Object.Equals(Object) | 比較引用 |
Structure | ValueType.Equals | 比較字段的值 |
Enumeration | Enum.Equals | |
Delegate | MulticastDelegate.Equals | |
Interface | Object.Equals(Object) |
對(duì)于Equals(Object)方法來說,下列語句必須為true。(下例中的引用類型x,y和z均不為null)
x.Equals(x) == true(例外,x為浮點(diǎn)數(shù))
x.Equals(y) == y.Equals(x)
若干x和y都是NaN,則x.Equals(y) == true
如果(x.Equals(y) && y.Equals(z)) == true,則x.Equals(z) == true
只有x和y指向的對(duì)象沒有改名,x.Equals(y)的值必須一直相同。
x.Equals(null) == false
注意:Equals方法不能拋異常。
實(shí)現(xiàn)IComparable接口的類型必須重寫Equals方法;
重寫Equals方法的類型必須也重寫GetHashCode方法;否則hash表可能無法正常工作。
如果重載了“==”運(yùn)算符,也必須重新Equals方法。
如果對(duì)引用類型使用“==”運(yùn)算符,默認(rèn)為比較引用的地址是否相同,即是否指向同一個(gè)對(duì)象。
public static bool Equals(Object objA, Object objB)
判斷兩個(gè)對(duì)象是否相等。
如果objA和objB指向同一個(gè)對(duì)象,或兩者都為null,返回true;
如果兩者里面一個(gè)為null,另一個(gè)不是,返回false;
如果兩個(gè)對(duì)象都不為null,且不是指向同一個(gè)對(duì)象,該方法會(huì)自動(dòng)調(diào)用objA.Equals(objB)方法。
protected virtual void Finalize()
在該對(duì)象被垃圾回收器回收前執(zhí)行特定的釋放資源和清理工作。
public virtual int GetHashCode()
hashcode是一個(gè)數(shù)字,一般用于在對(duì)象進(jìn)行相等性判斷是來標(biāo)識(shí)對(duì)象,也可用于在集合中作為對(duì)象的索引。
默認(rèn)的GetHashCode方法并不保證能為所有的對(duì)象生成唯一的Hash值。
public Type GetType()
返回當(dāng)前實(shí)例的類型信息,如:Int32,String,Person等。
protected Object MemberwiseClone()
創(chuàng)建一個(gè)當(dāng)前對(duì)象的淺表副本。
此方法會(huì)創(chuàng)建一個(gè)新的對(duì)象,并將源對(duì)象中的非靜態(tài)字段的值復(fù)制到新對(duì)象中,但要注意的是,如果字段是引用類型,此方法只會(huì)復(fù)制引用,也就是說,兩個(gè)對(duì)象中的該引用字段會(huì)指向同一個(gè)對(duì)象。
public static bool ReferenceEquals(Object objA, Object objB)
判斷兩個(gè)引用是否指向同一個(gè)對(duì)象;特別的,如果兩個(gè)引用均為null,結(jié)果也為true。
另外,如果參數(shù)是值類型,基于自動(dòng)裝箱的原因,結(jié)果總是為false。
public virtual string ToString()
返回一個(gè)字符串,默認(rèn)返回當(dāng)前對(duì)象的類型信息。一般會(huì)在子類中重寫。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
名稱欄目:System.Object類-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://jinyejixie.com/article18/pspdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、商城網(wǎng)站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容