CTS型別系統

2021-07-26 17:25:03 字數 1514 閱讀 6238

cts通用型別系統,是.net中一套定義型別的規則。我們要掌握c#開發,首先要建立這個型別概念,只有知道c#的元素是什麼型別,才能進行相關的分析和選材。

c#分兩個大類,一類是引用型別;另一類是值型別。

引用型別從技術上來講,就是乙個指標,指向具體的資料;而值型別實際就存放資料。因此引用型別大小都是固定的(雖然它實際關聯其他部分,但是你傳遞引用型別不需要傳遞這些,只需要傳遞指標),而值型別有不同的大小。

所有型別都從system.object派生,包括值型別分支。所有值型別都是system.valuetype的子類,或者是列舉system.enum的子類。而system.valuetype 和system.enum自身卻是引用型別。因此繼承關係和是否是值型別無關,使用者需要通過class ,struct等關鍵字去定義不同的型別。

使用者自定義的類、介面、陣列、委託是引用型別;自定義的列舉、結構是值型別。

結構和類的區別是,結構的基型別不能自定義,固定是system.valuetype,也就是結構設計上,不能建立多層的繼承模式。不過結構可以實現介面。

值型別轉換到引用型別時,如轉化成基型別object會產生「裝箱」操作,從技術上講,就是將資料複製到新的記憶體空間,然後用指標指向它,因此是乙個耗費資源的操作。對應的」取消裝箱」是個相反的過程。

泛型不是一種型別,而是一種定義型別的快捷方式。先用佔位符作為型別定義的一部分,在實際定義型別的時候給出對應的部分,形成真實的型別。如class c{} 的c並不是型別,而是未完成的模版,需要給定t 的實際型別,才能得到完整的型別 如: c這裡就定義了乙個c型別。泛型可以用來定義引用型別也可以用來定義值型別。

匿名型別是用new 格式定義的型別,直接繼承自object,成員具有唯讀性。該型別主要用來處理臨時的資料物件。

可null型別,在值型別後增加?表示可null型別。可null型別是system.nullable泛型結構的例項。主要用在資料庫程式設計。

委託型別從system.delegate 或 system.multicastdelegate 派生,屬於引用型別。委託型別通過關鍵字delegate建立,委託型別特殊性在於它主要是用來封裝函式的,而結構和類用來封裝資料和操作,其中結構偏向資料,而類偏向操作。可見這三種自定義型別,有各自的重點。

委託相當於函式指標,它自身不儲存實際的運算過程,而是保持指向函式的指標。這有點類似引用型別的資料關係。可以用函式名初始化委託,也可以建立「匿名方法」或lambda算式例項化委託。

匿名方法通過 delegate 建立,是一種在函式內建立的閉包。所謂閉包是一段**,但是可以包含宿主函式的區域性變數。

lambda 是匿名方法的改進,如 (x,y)=>x+y 可以簡潔的描述簡單演算法。

委託型別和介面型別的共同點是不涉及具體的實現,而關注「形態」,因此都可以做到分離具體實現的目的。其中介面比委託要強大的地方是介面可以定義多個函式形態,而委託只是乙個,不過這可能是優勢也可能是劣勢,比如你可以定義多個委託,鏈結不同的例項;而用介面的多個函式形態卻只能乙個例項去實現。

因此,要聯通元件,有兩個選擇:一、對於選擇不同演算法實現,或者事件通知,用委託最好;二、對於一組關聯的操作,物件互操作,用介面最好。

C 預定義資料型別(CTS型別)理解

c 預定義資料型別 cts型別 理解 入坑c 留下自己的學習記錄 cts型別是c 預定義的型別,包括預定義值型別和預定義的引用型別。內建cts值型別 預定義值型別 表示基本型別,如整型 浮點型別 字元型別和布林型別。預定義的引用型別包括object型別和string型別。值得注意的是 string引...

CTS測試方法

1.準備一台測試機器a,一張可以打 發簡訊的sim卡,一張16g的高速tf卡 推薦閃迪class10等級,讀寫速度95m s 還需要能夠連線youtube 的網路 推薦使用2m的香港專線 2.首先把a恢復出廠設定,然後連線電腦在terminal下進入到media資料夾輸入一下命令拷貝檔案到a的記憶體...

CTS測試介紹

cts測試基本介紹 cts測試全稱為系列相容測試 compatibility test suite cts是為了測試手機是否符合google定義的相容性規範 compatibility definition 從而基於android的應用程式能在基於同乙個api版本的裝置上面執行。通過cts測試的裝置...