《CLR via C 》第四章《型別基礎》

2021-10-11 02:29:24 字數 1292 閱讀 1870

coding中,任何型別都是繼承於system.object的,形如public class physicalgc : basecommand其實完整的寫法應該是public class physicalgc : basecommand:system.object既然繼承了system.object,那就代表了所有的型別的物件都是擁有該system.object的最基本的四個方法:

公共方法

說明equals

判斷物件是否具有相同的值

gethashcode

獲得物件的hash值

tostring

返回型別的完整型別(在除錯的時候經常會用到,我們會重寫該方法,返回我們所需要的物件值)

gettype

獲得該物件的實際資料型別(非虛方法,是不能被重寫的,以防止非法隱瞞其型別)

簡單的型別轉換用一句話就能概括:只有大的,基類的型別往小的,派生的型別轉化時才需要強制型別轉換。

clr為了型別安全考慮,是不允許強制轉換本不屬於基類的型別進行轉換的,類如datetoye e = new datetype()這裡的e物件,顯然不能這麼轉換employee e2 = (employee)e

c#中,建議用is\as來進行資料型別的轉化:該方法是不會向傳統的資料型別轉化在編譯的時候報錯的,它們只會返回truefalse

is傳統的寫法:

if(o

is employee)

如果細心的看的話,上述操作操作,clr會兩次進行型別的判斷,這顯然會對效能造成一定的影響,所以在多數程式設計裡,採用as操作符來進行上述的編碼

if(o

as employee !=

null

)

命名空間形如

using system.text;
給在該命名空間下的每個物件預設前面新增system.text的字首。

程式集形如

newegg.esd.alertservice.clientlib.dll
首先要認識到程式集和命名空間是沒有什麼多大關係的,乙個程式集可以有多個命名空間,乙個命名空間也可以跨多個程式集

第四章 型別基礎

這章不好理解,我是連抄帶找的。一 system.object 所有型別的基類,也就是所有型別從它派生。公開了幾個方法 equals 判定兩個物件是否具有相同的值 相等性和同一性後續討論 gethashcode tostring 預設返回型別的完整名稱,但是經常會重寫返回表示物件狀態的 string ...

第四章 型別基礎

4.1 所有型別都從system.object派生 執行時 要求每個型別最終都從system.object型別派生。system.object 公共例項方法 equals 如果兩個物件具有相同的值,就返回true。gethashcode 返回物件的值得雜湊碼。如果某個型別的物件要在雜湊表集合中作為建...

框架設計 CLR Via C 第四章

4.1所有的型別都是system.object型別派生的 class employee class employee system.object employee e new employee constructorparaml new 關鍵字要做的事情 1 它計算型別及其所有基型別 最高到syst...