在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
來進行資料型別的轉化:該方法是不會向傳統的資料型別轉化在編譯的時候報錯的,它們只會返回true
或false
。
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...