第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

c#中值類(lèi)型和引用類(lèi)型的區(qū)別

c#中值類(lèi)型和引用類(lèi)型的區(qū)別

C#
12345678_0001 2019-05-14 09:08:57
c#中值類(lèi)型和引用類(lèi)型的區(qū)別
查看完整描述

3 回答

?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

1、速度上的區(qū)別

值類(lèi)型存取速度快,引用類(lèi)型存取速度慢。

2、用途上的區(qū)別

值類(lèi)型表示實(shí)際數(shù)據(jù),引用類(lèi)型表示指向存儲(chǔ)在內(nèi)存堆中的數(shù)據(jù)的指針或引用。

3、來(lái)源上的區(qū)別

值類(lèi)型繼承自System.ValueType,引用類(lèi)型繼承自System.Object

4、位置上的區(qū)別

值類(lèi)型的數(shù)據(jù)存儲(chǔ)在內(nèi)存的棧中,引用類(lèi)型的數(shù)據(jù)存儲(chǔ)在內(nèi)存的堆中,而內(nèi)存單元中只存放堆中對(duì)象的地址。

5、類(lèi)型上的區(qū)別

值類(lèi)型的變量直接存放實(shí)際的數(shù)據(jù),而引用類(lèi)型的變量存放的則是數(shù)據(jù)的地址,即對(duì)象的引用。

6、保存位置上的區(qū)別

值類(lèi)型變量直接把變量的值保存在堆棧中,引用類(lèi)型的變量把實(shí)際數(shù)據(jù)的地址保存在堆棧中,而實(shí)際數(shù)據(jù)則保存在堆中。

例如:

字符串類(lèi)型,而堆棧則用于存儲(chǔ)固定長(zhǎng)度的數(shù)據(jù),如整型類(lèi)型的數(shù)據(jù)int(每個(gè)int變量占用四個(gè)字節(jié))。

數(shù)據(jù)存儲(chǔ)的位置可以得知,當(dāng)把一個(gè)值變量賦給另一個(gè)值變量時(shí),會(huì)在堆棧中保存兩個(gè)完全相同的值;而把一個(gè)引用變量賦給另一個(gè)引用變量,則會(huì)在堆棧中保存對(duì)同一個(gè)堆位置的兩個(gè)引用,即在堆棧中保存的是同一個(gè)堆的地址。

在進(jìn)行數(shù)據(jù)操作時(shí),對(duì)于值類(lèi)型,由于每個(gè)變量都有自己的值,因此對(duì)一個(gè)變量的操作不會(huì)影響到其它變量;對(duì)于引用類(lèi)型的變量,對(duì)一個(gè)變量的數(shù)據(jù)進(jìn)行操作就是對(duì)這個(gè)變量在堆中的數(shù)據(jù)進(jìn)行操作,

如果兩個(gè)引用類(lèi)型的變量引用同一個(gè)對(duì)象,實(shí)際含義就是它們?cè)诙褩V斜4娴亩训牡刂废嗤?,因此?duì)一個(gè)變量的操作就會(huì)影響到引用同一個(gè)對(duì)象的另一個(gè)變量。





查看完整回答
反對(duì) 回復(fù) 2019-05-15
?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

舉例:
應(yīng)用類(lèi)型:
數(shù)組(派生于System.Array)
用戶(hù)用定義的以下類(lèi)型:
類(lèi):class(派生于System.Object);
接口:interface(接口不是一個(gè)“東西”,所以不存在派生于何處的問(wèn)題。Anders在《C# Programming Language》中說(shuō),接口只是表示一種約定[contract]);
委托:delegate(派生于System.Delegate)。
object(System.Object的別名);
字符串:string(System.String的別名)。
可以看出:

引用類(lèi)型與值類(lèi)型相同的是,結(jié)構(gòu)體也可以實(shí)現(xiàn)接口;
引用類(lèi)型可以派生出新的類(lèi)型,而值類(lèi)型不能;
引用類(lèi)型可以包含null值,值類(lèi)型不能(可空類(lèi)型功能允許將 null 賦給值類(lèi)型);
引用類(lèi)型變量的賦值只復(fù)制對(duì)對(duì)象的引用,而不復(fù)制對(duì)象本身。而將一個(gè)值類(lèi)型變量賦給另一個(gè)值類(lèi)型變量時(shí),將復(fù)制包含的值。
對(duì)于最后一條,經(jīng)?;煜氖莝tring。我曾經(jīng)在一本書(shū)的一個(gè)早期版本上看到String變量比string變量效率高;我還經(jīng)常聽(tīng)說(shuō)String是引用類(lèi)型,string是值類(lèi)型,等等。

值類(lèi)型 :
C#的所有值類(lèi)型均隱式派生自System.ValueType:

結(jié)構(gòu)體:struct(直接派生于System.ValueType);
數(shù)值類(lèi)型:
整型:sbyte(System.SByte的別名),short(System.Int16),int(System.Int32),long (System.Int64),byte(System.Byte),ushort(System.UInt16),uint (System.UInt32),ulong(System.UInt64),char(System.Char);
浮點(diǎn)型:float(System.Single),double(System.Double);
用于財(cái)務(wù)計(jì)算的高精度decimal型:decimal(System.Decimal)。
bool型:bool(System.Boolean的別名);
用戶(hù)定義的結(jié)構(gòu)體(派生于System.ValueType)。
枚舉:enum(派生于System.Enum);
可空類(lèi)型(派生于System.Nullable<T>泛型結(jié)構(gòu)體,T?實(shí)際上是System.Nullable<T>的別名)。
每種值類(lèi)型均有一個(gè)隱式的默認(rèn)構(gòu)造函數(shù)來(lái)初始化該類(lèi)型的默認(rèn)值。

C# 支持兩種變量類(lèi)型:

? 值類(lèi)型 — 這些是內(nèi)置的基本數(shù)據(jù)類(lèi)型,例如 char、int、float等基本數(shù)據(jù)類(lèi)型(string除外) 、枚舉以及用 struct 聲明的用戶(hù)定義類(lèi)型。

? 引用類(lèi)型 — 從基本類(lèi)型構(gòu)造而來(lái)的類(lèi)和其他復(fù)雜數(shù)據(jù)類(lèi)型。如:類(lèi)、接口、數(shù)組和字符串。這種類(lèi)型的變量并不包含類(lèi)型的實(shí)例,而只是包含對(duì)實(shí)例的引用。
值類(lèi)型和引用類(lèi)型的區(qū)別在于他們?cè)趦?nèi)存中的存儲(chǔ)方式,值類(lèi)型存貯在棧中,引用類(lèi)型的內(nèi)存單元中只存放對(duì)象的地址,而對(duì)象本身存貯在內(nèi)存堆中。
值類(lèi)型在內(nèi)存中引用的時(shí)候會(huì)在堆棧中創(chuàng)建一個(gè)全新的副本,而不是簡(jiǎn)單的引用;而引用類(lèi)型只是簡(jiǎn)單的引用對(duì)象的地址。


 


查看完整回答
反對(duì) 回復(fù) 2019-05-15
  • 3 回答
  • 0 關(guān)注
  • 604 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)