C# System.Object
因?yàn)樗蓄惗祭^承于SystenUDbject,所以這些類都可以訪問該類中受保護(hù)的成員和公共成員。下面看看可供使用的成員有哪些。System.Object包含的方法如表所示。
方 法 | 返回類型 | 虛擬 | 靜態(tài) | 說明 |
Object。 | N/A | 否 | 否 | System.Object類型的構(gòu)造函數(shù),由派生類型的構(gòu)造函數(shù)自動(dòng)調(diào)用 |
-Object()(也稱為 FinalizeO,參見下一節(jié)) | N/A | 否 | 否 | Systera.Object類型的析構(gòu)函數(shù),由派生類型的析構(gòu)函數(shù)自動(dòng)調(diào) 用,不能手動(dòng)調(diào)用 |
Equals(object) | bool | 是 | 否 | 把調(diào)用該方法的對象與另一個(gè)對象相比,如果它們相等,就返回 true。默認(rèn)的實(shí)現(xiàn)代碼會査看其對象參數(shù)是否引用了同一個(gè)對象 (因?yàn)閷ο笫且妙愋?。如果想以不同方式來比較對象,則可以 重寫該方法,例如.比較兩個(gè)對象的狀態(tài) |
Equalstobject, object) | bool | 否 | 是 | 這個(gè)方法比較傳送給它的兩個(gè)對象,看看它們是否相等。檢査時(shí) 使用了 Equals(object)方法。注意,如果兩個(gè)對象都是空引用, 這個(gè)方法就返回true |
ReferenceEquals(object, object) | bool | 否 | 是 | 這個(gè)方法比較傳送給它的兩個(gè)對象,看看它們是不是同一個(gè)實(shí)例 的引用 |
ToStringO | string | 是 | 否 | 返回一個(gè)對應(yīng)于對象實(shí)例的字符串。默認(rèn)情況下,這是一個(gè)類類 型的限定名稱,但可以重寫它,給類類型提供合適的實(shí)現(xiàn)代碼 |
MemberwiseClone() | object | 否 | 否 | 通過創(chuàng)建一個(gè)新對象實(shí)例并復(fù)制成員,以復(fù)制該對象。成員復(fù)制 不會得到這些成員的新實(shí)例。新對象的任何引用類型成員都將引 用與源類相同的對象,這個(gè)方法是受保護(hù)的,所以只能在類或派 生的類中使用 |
GetType() | System. Type | 否 | 否 | 以System/Type對象的形式返回對象的類型 |
GetHashCode() | int | 是 | 否 | 在箱要此參數(shù)的地方,用作對象的散列函數(shù),它返回一個(gè)以壓縮 形式標(biāo)識對象狀態(tài)的值 |
這些方法是.NET Framework中對象類型必須支持的基本方法,但我們可能從不使用其中的某些類型(或者只在特殊情況下使用,如GetHashCode())。
在利用多態(tài)性時(shí),GetTypeO是一個(gè)有用的方法,允許根據(jù)對象的類型來執(zhí)行不同的操作,而不是像通常那樣,對所有對象都執(zhí)行相同的操作。例如,如果函數(shù)接受一個(gè)object類型的參數(shù)(表示可以給該函數(shù)傳送任何信息),就可以在遇到某些對象時(shí)執(zhí)行額外的任務(wù)。組合使用Getiype()和typef(這是一個(gè)C#運(yùn)算符,可以把類名轉(zhuǎn)換為System.Type對象),就可以進(jìn)行比較操作,如下所示:
if (myObj.GetType() == typeof(MyComplexClass))
{
// myObj is an instance of the class MyComplexClass.
}
返回的System.Type對象可以完成更多工作,這里不討論它們。重寫ToStringO方法也是非常有用的,在對象的內(nèi)容可以用一個(gè)人們能理解的字符串表示時(shí),尤其如此。
點(diǎn)擊加載更多評論>>