国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#類屬性封裝、字段的詳解

2019-11-14 16:34:39
字體:
來源:轉載
供稿:網友

   今日敲代碼時,突然感覺對類的屬性封裝、字段有點犯迷糊了。。連基礎的都不知道了,那敲的代碼怎么能嚴謹高效的。果斷拿起各種高級編程、大全啥的翻起來~~這不再把自己的理解寫下來(定義都是直接抄書的),獻給同樣迷糊的小伙伴。

    先說下類的成員,它分為數據成員和函數成員。數據成員,簡單點可以理解成類的數據,包含了字段、常量(const)、事件;函數成員,就是操作類中的數據,包含方法、屬性、構造函數、終結器(析構函數)、運算符、索引器。(就提一下,方便后面說下去,要都解釋就偏題了)字段就是類里定義的變量,而屬性則是字段的拓展。所以在使用屬性前要結合一個正常的字段聲明,這個字段稱為屬性的后備字段(backing field):

 1 PRivate int numberOfCows;  2 public int NumberOfCows 3 { 4        get 5        { 6               return numberOfCows; 7        } 8        set 9        {10               numberOfCows = value;11               BagOfFeed = numberOfCows * FeedMultiplier;12        }13 }

讀取NumberOfCows字段時會運行get方法,返回私有字段numberOfCows。而設置NumberOfCows字段時,會調用set方法,看上去這個方法沒有參數,其實value就是它的參數,其中包含為這個字段設置的值。其實這就是用屬性來對字段進行封裝(這就是封裝啦)。

使用封裝還可以實現對屬性的只讀、只寫:

1 public string Name { get; private set; }//只讀2 public string Name { private get; set; }//只寫

這樣寫屬性時,編譯器會自動創建private string name。這種是會自動實現后備成員變量的自動實現屬性。

如果是:

1 public string Name { get; set; }

這樣的沒有啥限定的屬性,其實和公有字段沒多大區別了。

但是從面向對象的角度來講,公開的是方法,而不是字段哦。而且微軟也推薦:所有的字段都設置為私有字段,如果要使用它們,則把它們封裝成屬性。對于這樣簡單的set或get,編譯器會自動進行inline處理,沒有函數進出棧的性能損失。所以還是建議不要用公有字段了,給字段穿件衣服吧~~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 文登市| 夏津县| 尤溪县| 民和| 穆棱市| 开平市| 天津市| 怀柔区| 来凤县| 馆陶县| 东台市| 莲花县| 聂拉木县| 深泽县| 德惠市| 靖边县| 江口县| 邵东县| 白水县| 佛坪县| 汝州市| 安康市| 呼和浩特市| 车致| 柯坪县| 墨玉县| 分宜县| 乌拉特前旗| 治县。| 长子县| 玉溪市| 安国市| 孝义市| 北票市| 秀山| 宁阳县| 盐津县| 务川| 秦皇岛市| 丹江口市| 大竹县|