麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

c#結構和類的相關介紹

2020-01-24 03:37:52
字體:
來源:轉載
供稿:網友

我們不關心對象內部是怎么實現的,我們關心的是他提供給我什么接口,有什么操作。從技術上來說,結構屬于值類型,而類屬于引用類型。結構不能指定繼承基類類型,類可以。不過結構和類都能實現接口。
一、應用場合
結構的應用場合:

一、自定義數據類型,數據成員是公開的,提供工具函數。

二、抽象的數據類型,數據成員是密封的,提供相關的數據操作函數。

總之,都是圍繞數據作文章。

類的應用場合:

一、提供一組類,形成一個有機整體,形成一個系統,類數據成員是密封的,只提供相互通信的函數接口。

類主要通過不同的類組成一個類間通信的系統。而類自身是整個系統的一部分。

二、成員和可訪問性
作為抽象數據類型的工具,類和結構提供了豐富的封裝功能。

1.字段定義數據成員,無封裝

2.屬性封裝字段的訪問方式

3.函數提供可用操作

4.事件提供了處理消息的模型

5.索引器封裝了數據集合

另外

構造函數、析構函數負責初始化和清理垃圾(在c#中需要使用IDispose模式)

對于成員,可以有三大類,1、類成員,所有實例共享;(static 修飾)2、對象公開成員;(public 修飾)3、對象私有成員。其中公開成員是最重要的,私有成員屬于內部實現細節。

公開成員是對象的特征,因為對于使用者來說,只能通過公開成員和對象進行互動。可以通過提取公開成員,形成一個獨立接口,用來隔離具體的實現。這樣,設計者便可以提供不同的類實現給客戶。

三、泛型和接口
類和結構的共同點都是屬于實現,而接口屬于規范,客戶端應該避免直接接觸具體的實現,否則客戶端就需要根據實現的變化而變化,這明顯是不經濟的。但是類和結構又有差別,類側重行為,因此和接口更加搭配;而結構側重數據,而接口是沒有數據的,并且接口屬于引用類型,當結構作為值類型轉化成接口,就會產生裝箱,會有性能問題。因此,接口一般不會配合結構來使用,而結構應該作為更加單純的數據單元,不應該添加太多功能性。如果需要設計功能豐富的組件,最好是基于類來實作。當結構作為數據單元,它要修改設計的余地很少,因為數據單元的應用場合更多是被其他人修改,不具太多自主性。結論是結構自身便可以作為規范。

泛型是未完成的類型,因此提供了客戶端自定義類型的機會。泛型的每一個實例,都共享相同或者類似的代碼,那么客戶端需要泛型的理由是什么?

c#是強類型的系統,就算邏輯上一樣,因為類型不同,在編譯器看來都是完全不同的代碼。當客戶端需要為不同類型采取相同的邏輯的時候,泛型就提供了一個快捷的,越過強類型限制的渠道。比如有個int + int 和 float + float在我們人類看來幾乎是一摸一樣,但是強類型的編譯器要求你重復書寫代碼,泛型能做到T + T,然后讓客戶端用可支持+操作的參數生成任何類型。

從客戶端的角度,它不在乎實現是怎樣的,它在乎的是接口是怎樣的。泛型對客戶端的意義在于強化了接口,從提供特定類型的接口到提供滿足特定條件的一定范圍內的類型的新型接口。這就讓可用性大大增強。(按照實際應用情況,我們應該將泛型視為常態,單一類型的接口才是特殊態)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久99精品视频在线观看 | av免费不卡国产观看 | 狠狠99 | 国产精品免费看 | 新久草在线视频 | 国产精品免费一区二区 | 在线区 | 羞羞视频免费观看入口 | 久久久久国产成人免费精品免费 | 欧美一级毛片一级毛片 | 亚洲少妇诱惑 | 精品亚洲一区二区三区 | 欧美一级色片 | 爱视频福利 | 成人勉费视频 | 天天夜干 | 国产福利视频在线观看 | av免费不卡国产观看 | 99最新网址 | 亚洲电影免费观看国语版 | 欧美一级毛片免费观看视频 | 国产亚洲综合一区二区 | 国产精品久久久久av | 狠狠干天天操 | 亚洲第九十九页 | 久久综合久久美利坚合众国 | chinese xvideos gay | 精品国产一区二区三区四区阿崩 | 亚洲视频观看 | 欧美a视频在线观看 | 激情亚洲一区二区 | 黄色特级一级片 | 蜜桃一本色道久久综合亚洲精品冫 | 久久久久久久不卡 | 国产成人在线免费观看视频 | 国产a级网站| 黄色7777| 青草久久久久 | 精品999久久久 | 国产日韩大片 | 久久成人精品视频 |