第四章型別基礎 CLR學習第四課

2022-01-29 06:30:09 字數 1435 閱讀 6164

一、任何類,都繼承或者間接繼承自object類,其實萬類之源。所以任何類都具有object類的屬性和方法。equals、gethashcode、tostring、gettype、memberwiseclone、finalize方法。

二、當我們例項化乙個類時,將從託管堆中,分配該型別所需要的空間;然後初始化物件成員,沒乙個例項化物件都有2個附件成員,第乙個成員為指向型別方法的指標;第二個成員(syncblockindex),該欄位用於執行緒同步,其中的某些位還用於垃圾處理時的標記;另外object的預設型別gethashcode方法也用到了改欄位。clr使用這2個字段來管理物件例項。

三、a--b:a--c:b;b繼承自a,c繼承自b。如果例項化c,將先執行c的初始化,然後發現其應用了b,所以就執行b類,b開始初始化,其初始化發現其引用了a就開始a的初始化,然後a開始執行static函式,和構成函式--然後b執行static函式和構成函式,最後才是c的static函式和建構函式。

四、型別轉換is、as:在進行型別轉換時as的效率高於is;如果某個方法接收乙個object型別的引數,然後把該引數轉換為某個型別;此時如果我們把乙個時間作為引數傳遞給該方法,在編譯時不會提示錯誤。但在執行時,會執行方法中的**,就把乙個datetime的型別強制轉換為某個型別(clr在執行時檢查型別安全)。必然匯出錯誤丟擲system。invalidcastexception的異常錯誤。

as:把某個型別轉換為指定的型別,轉換成功則返回該型別。轉換失敗則返回null;如(bool b=o  as object)。

is:判斷某個實體類是否為指定型別,如果是在進行強制轉換,然後再;如(o is object 如果是在進行轉換 object = (object)o ,這就導致了2次檢查型別相容)。

型別轉換:只能從子類轉換到父類。不能從父類轉換到子類,因為子類有的父類不一定有,如果轉換會導致,型別、方法等丟失,不安全。

五、clr不認識命名空間;命名空間加上類名才是完整的類名,我們在用**中using後,在後面就可以直接呼叫該命名空間下的類,其實是編譯器為我們 在檢查沒乙個型別時,安裝using 的順序,乙個乙個的檢查某個類是否在該命名空間下(應該說是否在這個路徑下(當然是沒有這個說法的,自己的理解,命名空間相當於一種虛擬路徑))。如果不在檢查下乙個命名空間。如果都找不到提示錯誤。

六:mscorlib(多語言標準通用物件執行時庫:multilanguage standard  common object runtime library,這個名字是由ecma給的,其實微軟給的原名是:micsoft common object runtime library;你是否認為是微軟核心類庫縮寫呢?哈哈);該類庫在.net程式執行時自動載入,包含了.net fcl 核心類庫。

七:用using 解決多個命名空間下類名相同的情況,及使用別名,類只能定義在命名空間下,命名空間可以巢狀,類也可以巢狀。

八、命名空間和程式集不是乙個概念:乙個命名空間下可以有多個程式集的程式。乙個程式集下可以有多個命名空間的**。

第四課 BLOB型別

向資料庫中插入blob型別的資料 public static void test01 catch exception e finally 從資料庫中讀取blob型別的資料到檔案 將blob型別的資料轉換成輸入流 binarystream blob.getbinarystream 從輸入流程讀取資料並...

Linux基礎 第四課

nfs伺服器設定 安裝sudo apt get install portma 安裝sudo apt get install nfs kernel server 配置檔案etc exports 增加共享的目錄 ip2位址以及許可權 啟動服務 service portmap start 然後啟動服務 s...

鋼琴第四課

因為此前每天都練琴,曲譜也都記住了,所以,週六,臨時被老師喊去時,非常自信。學到了很多知識。1.連貫性方面 連貫性要注意 其實,連貫性在於對曲目的熟練程度,手指的靈活程度,還有不同音之間的連貫跳躍 音要連續 不同音,要連續連線在一起 這個音落下,上個音才起來 2.節奏方面 四分音符要短快,彈到了,立...