溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#的類型基礎(chǔ)都有哪些

發(fā)布時(shí)間:2021-10-14 16:47:01 來源:億速云 閱讀:145 作者:柒染 欄目:編程語言

本篇文章為大家展示了C#的類型基礎(chǔ)都有哪些,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

  我們先簡單回顧一下C#中的類型系統(tǒng)。C#中的類型一共分為兩類,一類是值類型(ValueType),一類是引用類型(ReferenceType)。值類型和引用類型是以它們在計(jì)算機(jī)內(nèi)存中是如何被分配的來劃分的。值類型包括結(jié)構(gòu)和枚舉,引用類型包括類、接口、委托等。還有一種特殊的值類型,稱為簡單類型(SimpleType),比如byte,int等,這些簡單類型實(shí)際上是FCL類庫類型的別名,比如聲明一個(gè)int類型,實(shí)際上是聲明一個(gè)System.Int32結(jié)構(gòu)類型。因此,在Int32類型中定義的操作,都可以應(yīng)用在int類型上,比如“123.Equals(2)”。

  所有的值類型都隱式地繼承自System.ValueType類型(注意System.ValueType本身是一個(gè)類類型),System.ValueType和所有的引用類型都繼承自System.Object基類。你不能顯示地讓結(jié)構(gòu)繼承一個(gè)類,因?yàn)镃#不支持多重繼承,而結(jié)構(gòu)已經(jīng)隱式繼承自ValueType。

值類型

  當(dāng)聲明一個(gè)值類型的變量(Variable)的時(shí)候,變量本身包含了值類型的全部字段,該變量會被分配在線程堆棧(ThreadStack)上。

  當(dāng)我們在程序中寫下這樣的一條變量的聲明語句時(shí):

  ValPointvPoint1;

  實(shí)際產(chǎn)生的效果是聲明了vPoint1變量,變量本身包含了值類型的所有字段(即你想要的所有數(shù)據(jù))。

  因?yàn)樽兞恳呀?jīng)包含了值類型的所有字段,所以,此時(shí)你已經(jīng)可以對它進(jìn)行操作了(對變量進(jìn)行操作,實(shí)際上是一系列的入棧、出棧操作)。

  解決這個(gè)問題我們可以通過這樣一種方式:編譯器隱式地會為結(jié)構(gòu)類型創(chuàng)建了無參數(shù)構(gòu)造函數(shù)。在這個(gè)構(gòu)造函數(shù)中會對結(jié)構(gòu)成員進(jìn)行初始化,所有的值類型成員被賦予0或相當(dāng)于0的值(針對Char類型),所有的引用類型被賦予null值。(因此,Struct類型不可以自行聲明無參數(shù)的構(gòu)造函數(shù))。所以,我們可以通過隱式聲明的構(gòu)造函數(shù)去創(chuàng)建一個(gè)ValPoint類型變量:

  ValPointvPoint1=newValPoint();

  Console.WriteLine(vPoint.x);//輸出為0

  我們將上面代碼第一句的表達(dá)式由“=”分隔拆成兩部分來看:

  左邊ValPointvPoint1,在堆棧上創(chuàng)建一個(gè)ValPoint類型的變量vPoint,結(jié)構(gòu)的所有成員均未賦值。在進(jìn)行newValPoint()之前,將vPoint壓到棧上。

  右邊newValPoint(),new操作符不會分配內(nèi)存,它僅僅調(diào)用ValPoint結(jié)構(gòu)的默認(rèn)構(gòu)造函數(shù),根據(jù)構(gòu)造函數(shù)去初始化vPoint結(jié)構(gòu)的所有字段。

上述內(nèi)容就是C#的類型基礎(chǔ)都有哪些,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI