類(class)和結(jié)構(gòu)(struct)

? ? ? ? 類和結(jié)構(gòu)是 .NET Framework 中的常規(guī)類型系統(tǒng)的兩種基本構(gòu)造双絮。兩者在本質(zhì)上都屬于數(shù)據(jù)結(jié)構(gòu),封裝著一組整體作為一個邏輯單位的數(shù)據(jù)和行為拳恋。數(shù)據(jù)和行為是該類或結(jié)構(gòu)的“成員”鸣峭,它們包含各自的方法、屬性和事件等.

? ? ? ? 類或結(jié)構(gòu)的聲明類似于藍圖命咐,用于在運行時創(chuàng)建實例或?qū)ο蟆H绻x一個名為Person的類或結(jié)構(gòu)谐岁,則Person為類型名稱醋奠。如果聲明并初始化Person類型的變量p,則p稱為Person的對象或?qū)嵗恋琛窜司?梢詣?chuàng)建同一Person類型的多個實例,每個實例在其屬性和字段中具有不同的值航揉。

? ? ? ? 類是一種“引用類型”塞祈。創(chuàng)建類的對象時,對象賦值到的變量只保存對該內(nèi)存的引用帅涂。將對象引用賦給新變量時议薪,新變量引用的是原始對象尤蛮。通過一個變量做出的更改將反映在另一個變量中,因為兩者引用同一數(shù)據(jù)斯议。

? ? ? ?結(jié)構(gòu)是一種值類型产捞。創(chuàng)建結(jié)構(gòu)時,結(jié)構(gòu)賦值到的變量保存該結(jié)構(gòu)的實際數(shù)據(jù)捅位。將結(jié)構(gòu)賦給新變量時轧葛,將復(fù)制該結(jié)構(gòu)搂抒。因此艇搀,新變量和原始變量包含同一數(shù)據(jù)的兩個不同的副本。對一個副本的更改不影響另一個副本求晶。

? ? ? ? 類通常用于對較為復(fù)雜的行為建模焰雕,或?qū)σ趧?chuàng)建類對象后進行修改的數(shù)據(jù)建模。結(jié)構(gòu)最適合一些小型數(shù)據(jù)結(jié)構(gòu)芳杏,這些數(shù)據(jù)結(jié)構(gòu)包含的數(shù)據(jù)以創(chuàng)建結(jié)構(gòu)后不修改的數(shù)據(jù)為主矩屁。\\\\

? ? ? ? 結(jié)構(gòu)與類共享大多數(shù)相同的語法,但結(jié)構(gòu)比類受到的限制更多

? ? ? ? 在結(jié)構(gòu)聲明中爵赵,除非字段被聲明為 const 或 static吝秕,否則無法初始化。

? ? ? ? 結(jié)構(gòu)不能聲明默認構(gòu)造函數(shù)(沒有參數(shù)的構(gòu)造函數(shù))或析構(gòu)函數(shù)空幻。

? ? ? ? 結(jié)構(gòu)在賦值時進行復(fù)制烁峭。

? ? ? ? 將結(jié)構(gòu)賦值給新變量時,將復(fù)制所有數(shù)據(jù)秕铛,并且對新副本所做的任何修改不會更改原始副本的數(shù)據(jù)约郁。在使用值類型的集合(如 Dictionary)時,請務(wù)必記住這一點但两。

? ? ? ?結(jié)構(gòu)是值類型鬓梅,而類是引用類型。

? ? ? ?與類不同谨湘,結(jié)構(gòu)的實例化可以不使用new運算符绽快。

? ? ? ?結(jié)構(gòu)可以聲明帶參數(shù)的構(gòu)造函數(shù)。

? ? ? ? 一個結(jié)構(gòu)不能從另一個結(jié)構(gòu)或類繼承紧阔,而且不能作為一個類的基坊罢。

? ? ? ? 所有結(jié)構(gòu)都直接繼承自System.ValueType,后者繼承自System.Object寓辱。(其實就是值類型與引用類型的區(qū)別)

? ? ? ? 結(jié)構(gòu)可以實現(xiàn)接口艘绍。

? ? ? ? 結(jié)構(gòu)可用作可以為 null 的類型,因而可向其賦 null 值秫筏。

? ? ? ? .NET BCL里有哪些是類(結(jié)構(gòu))诱鞠,為什么它們不是結(jié)構(gòu)(類)挎挖?

? ? ? ? BCL(Base Class Library)是Dot Net Framework下所有語言使用的類庫(有哪些類和結(jié)構(gòu),你就隨便說吧航夺,System名字空間的有多少啊~需要注意的是DateTime這玩意其實是一個結(jié)構(gòu)體蕉朵。)為什么他們不是結(jié)構(gòu)(類)呢?這道題和下面的小問題其實是一個問題那就是什么時候定義結(jié)構(gòu)什么時候定義類阳掐,下面一起回答

? ? ? ? 在自定義類型時始衅,您如何選擇是類還是結(jié)構(gòu)?

? ? ? ? struct類型適于表示Point缭保、Rectangle和Color等輕量對象汛闸。盡管使用自動實現(xiàn)的屬性將一個點表示為類同樣方便,但在某些情況下使用結(jié)構(gòu)更加有效艺骂。例如诸老,如果聲明一個 1000 個Point對象組成的數(shù)組,為了引用每個對象钳恕,則需分配更多內(nèi)存别伏;這種情況下,使用結(jié)構(gòu)可以節(jié)約資源忧额。因為 .NET Framework 包含一個名為Point的對象厘肮,所以本示例中的結(jié)構(gòu)命名為“CoOrds”。復(fù)數(shù)睦番、坐標(biāo)系中的點或字典中的“鍵-值”對都是結(jié)構(gòu)的典型示例类茂。

?除非滿足一下所有條件,否則不要定義成值類型(結(jié)構(gòu)體)

第一抡砂,類型具有基元類型的行為大咱。類型簡單,其中沒有成員會修改類型的任何實例字段注益。

第二碴巾,類型不需要從其他任何類型繼承。

第三丑搔,類型不會派生出其他任何類型厦瓢。

除了滿足以上全部條件,還必須滿足以下條件中的一個啤月。

第一煮仇,類型的實例較小(約是16字節(jié)或者更谢阎佟)浙垫。

第二,類型實例較大,但不作為方法的實參傳遞夹姥,也不通過方法返回杉武。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市辙售,隨后出現(xiàn)的幾起案子轻抱,更是在濱河造成了極大的恐慌,老刑警劉巖旦部,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祈搜,死亡現(xiàn)場離奇詭異,居然都是意外死亡士八,警方通過查閱死者的電腦和手機容燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來曹铃,“玉大人缰趋,你說我怎么就攤上這事捧杉∩录” “怎么了?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵味抖,是天一觀的道長评甜。 經(jīng)常有香客問我,道長仔涩,這世上最難降的妖魔是什么忍坷? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮熔脂,結(jié)果婚禮上佩研,老公的妹妹穿的比我還像新娘。我一直安慰自己霞揉,他們只是感情好旬薯,可當(dāng)我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著适秩,像睡著了一般绊序。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秽荞,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天骤公,我揣著相機與錄音,去河邊找鬼扬跋。 笑死阶捆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播洒试,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼刊咳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了儡司?” 一聲冷哼從身側(cè)響起娱挨,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捕犬,沒想到半個月后跷坝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡碉碉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年柴钻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢粮。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡贴届,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜡吧,到底是詐尸還是另有隱情毫蚓,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布昔善,位于F島的核電站元潘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏君仆。R本人自食惡果不足惜翩概,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望返咱。 院中可真熱鬧钥庇,春花似錦、人聲如沸咖摹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楞艾。三九已至参咙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硫眯,已是汗流浹背蕴侧。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留两入,地道東北人净宵。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親择葡。 傳聞我的和親對象是個殘疾皇子紧武,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容