最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#:CTS類型系統(tǒng)

 更新時間:2012年12月03日 16:53:06   作者:  
CTS通用類型系統(tǒng),是.Net中一套定義類型的規(guī)則。我們要掌握c#開發(fā),首先要建立這個類型概念,只有知道c#的元素是什么類型,才能進行相關的分析和選材。

一、值類型和引用類型

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

引用類型從技術上來講,就是一個指針,指向具體的數(shù)據(jù);而值類型實際就存放數(shù)據(jù)。因此引用類型大小都是固定的(雖然它實際關聯(lián)其他部分,但是你傳遞引用類型不需要傳遞這些,只需要傳遞指針),而值類型有不同的大小。

所有類型都從System.Object派生,包括值類型分支。所有值類型都是System.ValueType的子類,或者是枚舉System.Enum的子類。而System.ValueType 和System.Enum自身卻是引用類型。因此繼承關系和是否是值類型無關,用戶需要通過class ,struct等關鍵字去定義不同的類型。

用戶自定義的類、接口、數(shù)組、委托是引用類型;自定義的枚舉、結構是值類型。

結構和類的區(qū)別是,結構的基類型不能自定義,固定是System.ValueType,也就是結構設計上,不能建立多層的繼承模式。不過結構可以實現(xiàn)接口。

值類型轉換到引用類型時,如轉化成基類型Object會產生“裝箱”操作,從技術上講,就是將數(shù)據(jù)復制到新的內存空間,然后用指針指向它,因此是一個耗費資源的操作。對應的”取消裝箱”是個相反的過程。

二、特殊類型

泛型不是一種類型,而是一種定義類型的快捷方式。先用占位符作為類型定義的一部分,在實際定義類型的時候給出對應的部分,形成真實的類型。如class C<T>{} 的C并不是類型,而是未完成的模版,需要給定T 的實際類型,才能得到完整的類型 如: C<int> 這里就定義了一個C<int>類型。泛型可以用來定義引用類型也可以用來定義值類型。

匿名類型是用new {成員a;成員b;} 格式定義的類型,直接繼承自Object,成員具有只讀性。該類型主要用來處理臨時的數(shù)據(jù)對象。

可null類型,在值類型后增加?表示可null類型??蒼ull類型是System.Nullable<T>泛型結構的實例。主要用在數(shù)據(jù)庫編程。

三、委托類型和接口類型

委托類型從System.Delegate 或 System.MulticastDelegate 派生,屬于引用類型。委托類型通過關鍵字delegate創(chuàng)建,委托類型特殊性在于它主要是用來封裝函數(shù)的,而結構和類用來封裝數(shù)據(jù)和操作,其中結構偏向數(shù)據(jù),而類偏向操作??梢娺@三種自定義類型,有各自的重點。

委托相當于函數(shù)指針,它自身不保存實際的運算過程,而是保持指向函數(shù)的指針。這有點類似引用類型的數(shù)據(jù)關系??梢杂煤瘮?shù)名初始化委托,也可以創(chuàng)建“匿名方法”或lambda算式實例化委托。

匿名方法通過 delegate{ 語句} 創(chuàng)建,是一種在函數(shù)內創(chuàng)建的閉包。所謂閉包是一段代碼,但是可以包含宿主函數(shù)的局部變量。

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

委托類型和接口類型的共同點是不涉及具體的實現(xiàn),而關注“形態(tài)”,因此都可以做到分離具體實現(xiàn)的目的。其中接口比委托要強大的地方是接口可以定義多個函數(shù)形態(tài),而委托只是一個,不過這可能是優(yōu)勢也可能是劣勢,比如你可以定義多個委托,鏈接不同的實例;而用接口的多個函數(shù)形態(tài)卻只能一個實例去實現(xiàn)。

因此,要聯(lián)通組件,有兩個選擇:一、對于選擇不同算法實現(xiàn),或者事件通知,用委托最好;二、對于一組關聯(lián)的操作,對象互操作,用接口最好。

相關文章

  • C#調用Python的URL接口的示例

    C#調用Python的URL接口的示例

    這篇文章主要介紹了C#調用Python的URL接口的示例,幫助大家更好的理解和學習c#,感興趣的朋友可以了解下
    2020-10-10
  • C#中委托的基礎入門與實現(xiàn)方法

    C#中委托的基礎入門與實現(xiàn)方法

    這篇文章主要給大家介紹了關于C#中委托的基礎入門與實現(xiàn)方法的相關資料,究竟什么是委托,用最通俗易懂的話來講,你就可以把委托看成是用來執(zhí)行方法(函數(shù))的一個東西,需要的朋友可以參考下
    2021-08-08
  • 詳解c# AutoMapper 使用方式

    詳解c# AutoMapper 使用方式

    本篇文章主要介紹了詳解c# AutoMapper 使用方式 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • C# WPF利用Clip屬性實現(xiàn)截屏框功能

    C# WPF利用Clip屬性實現(xiàn)截屏框功能

    這篇文章主要為大家詳細介紹了C# WPF如何利用Clip屬性實現(xiàn)截屏框功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-01-01
  • Quartz.Net任務和觸發(fā)器實現(xiàn)方法詳解

    Quartz.Net任務和觸發(fā)器實現(xiàn)方法詳解

    這篇文章主要介紹了Quartz.Net任務和觸發(fā)器實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • C#基礎入門之值類型和引用類型的區(qū)別詳析

    C#基礎入門之值類型和引用類型的區(qū)別詳析

    在C#中值類型的變量直接存儲數(shù)據(jù),而引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲在數(shù)據(jù)堆中,下面這篇文章主要給大家介紹了關于C#基礎入門之值類型和引用類型區(qū)別的相關資料,需要的朋友可以參考下
    2021-09-09
  • WinForm實現(xiàn)頁面按鈕定時隱藏功能

    WinForm實現(xiàn)頁面按鈕定時隱藏功能

    這篇文章主要介紹了WinForm實現(xiàn)頁面按鈕定時隱藏功能,結合實例形式分析了WinForm基于定時器的頁面控件屬性動態(tài)操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • C#實現(xiàn)讓窗體獲得焦點的方法示例

    C#實現(xiàn)讓窗體獲得焦點的方法示例

    這篇文章主要介紹了C#實現(xiàn)讓窗體獲得焦點的方法,涉及C#窗體事件相關操作技巧,需要的朋友可以參考下
    2017-06-06
  • C# Request.Form用法案例詳解

    C# Request.Form用法案例詳解

    這篇文章主要介紹了C# Request.Form用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • C# 如何使用ajax請求

    C# 如何使用ajax請求

    這篇文章主要介紹了C# 如何使用ajax請求,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07

最新評論

仪陇县| 吉安市| 南木林县| 东阿县| 得荣县| 大同市| 岳阳县| 宁强县| 通山县| 仁怀市| 申扎县| 平武县| 尼木县| 天祝| 永康市| 瑞丽市| 浦东新区| 孟州市| 洛宁县| 岚皋县| 志丹县| 安国市| 惠水县| 六枝特区| 台北县| 柏乡县| 思茅市| 玉溪市| 舞钢市| 唐山市| 伽师县| 鄢陵县| 旅游| 万宁市| 兴安盟| 镇平县| 皮山县| 邵东县| 兴隆县| 南乐县| 卢氏县|