程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 初探c#(三)類型

初探c#(三)類型

編輯:C#入門知識

1。3 類型

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

  也許是別人也有這個地址,他去燒了你的房子!好了,在給個例子:*/

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: }

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

  啊哈,應該粉清楚了吧。變量val1和變量val2互不影響,它們各自有自己的存儲空間。而ref2復制了ref1,所以,它們引用了同一個對象的實例。當改變它們其中一個的時候,就會影響到另一個的值。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved