明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Beginner with c# 3

[摘要]1。3 類型 c#支持兩種基本的類型:一種是值(value types),一種是引用(reference types)。值包括簡單類型 (char、int、和float),枚舉(enum)和結(jié)構(gòu)(struct)。引用包括類(class),界面(interface), 代表(delegate)和數(shù)組...
1。3 類型
c#支持兩種基本的類型:一種是值(value types),一種是引用(reference types)。值包括簡單類型
(char、int、和float),枚舉(enum)和結(jié)構(gòu)(struct)。引用包括類(class),界面(interface),
代表(delegate)和數(shù)組陣列(array)。值與引用不同之處在于:值直接存儲(chǔ)它的數(shù)據(jù)內(nèi)容;而引用存儲(chǔ)對(duì)象
的引用。是不是粉費(fèi)解?!打個(gè)比方吧。你在某地買了套別墅(好棒噢)。卻從未去過,只知道地址,怎
么辦?你可以坐出租車,司機(jī)看了地址就知道怎樣走不用你操心。你手里的地址就好像對(duì)象的名字,你把
它寫在程序中,就好像把地址給了司機(jī)。司機(jī)就是你的編譯器,它知道該去哪。你豪華的房子就好比那個(gè)
NGWS SDK開發(fā)包(82mb噢,夠豪華了!俺的m啊--就這樣燒嘍)。房子里有你想要的東東,比如你想寫一句
話(i dont like Hello world),就好像上面例子,要用到“WriteLine”。于是,你就給出“WriteLine”
的地址,比如:“Console.WriteLine”。明白?!俺可累了。zzz... (強(qiáng)打精神)不知道你想到?jīng)]有,
值和引用的區(qū)別可以引出一個(gè)重要特性。值的變量和變量存儲(chǔ)的數(shù)據(jù)是一一對(duì)應(yīng)的,唯一性。而引用則不
然。引用中不同的變量可以引用同一個(gè)對(duì)象的實(shí)例。當(dāng)其中一個(gè)變量改變實(shí)例的值時(shí),其他引用這個(gè)實(shí)例的
變量也會(huì)受到影響(當(dāng)然,變量本身并沒有改變,即,地址沒變)。瞧,變量只是說明存儲(chǔ)對(duì)象的位置(地
址),而不是對(duì)象本身。就好像你漂亮的房子被燒了,但你的地址并沒有改變,但地址對(duì)應(yīng)的房子就沒了。
也許是別人也有這個(gè)地址,他去燒了你的房子!好了,在給個(gè)例子:*/

1: using System;
2: class CValue
3: {
4: public int Value = 0;
5: }
6: class Test
7: {
8: static void Main() {
9: int val1 = 0;
10: int val2 = val1;
11: val2 = 123;
12: CValue ref1 = new CValue();
13: CValue ref2 = ref1;
14: ref2.Value = 123;
15: Console.WriteLine("Values: {0}, {1}", val1, val2);
16: Console.WriteLine("Refs: {0}, {1}", ref1.Value, ref2.Value);
17: }
18: }

/* 下面是輸出的結(jié)果:
Values: 0, 123
Refs: 123, 123

啊哈,應(yīng)該粉清楚了吧。變量val1和變量val2互不影響,它們各自有自己的存儲(chǔ)空間。而ref2復(fù)制
了ref1,所以,它們引用了同一個(gè)對(duì)象的實(shí)例。當(dāng)改變它們其中一個(gè)的時(shí)候,就會(huì)影響到另一個(gè)的


標(biāo)簽:Beginner with c# 3 

相關(guān)文章