熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

淺談“值類型”和“引用類型”

2013-11-13 10:16:03  來源: .NET編程 

  工作已經有一年有余做項目的時侯經常碰到值類型和引用類型當時對這兩個概念很難理解今閒暇之時翻看紅皮書頓有所悟和大家分享一下

  從概念上區分值類型直接存儲其值引用類型存儲對值的飲用按照存儲位置上的不同值類型存儲在堆棧中引用類型存儲在托管堆上

  下面用一個簡單實例來說明兩者的區別

  代碼

  //i j 都是值類型

  int i j;

  i = ;

  j = i;

  ConsoleWriteLine(i= + i);

  j = ;

  ConsoleWrite(i= + i);

  ConsoleReadLine();

  //結果

  //i = ;

  //i=

  注值類型的變量直接包含值將一個值類型變量賦給另外一個值類型變量時將復制包含的值所以本實例中兩個變量在內存的兩個地方存儲

  代碼

  Rainless RLA RLB;

  RLA = new Rainless();

  RLAstr = 改變前;

  RLB = RLA;

  ConsoleWriteLine(RLAstr);

  RLBstr = 改變後;

  ConsoleWriteLine(RLAstr);

  ConsoleReadLine();

  //輸出結果

  //改變前

  //改變後

  注和上面例子比較同是把一個變量賦值給另外一個變量可兩者之間的區別就大了Rainless是一個類類屬於引用類型引用類型的賦值只復制對象的引用而不對象本身所以RLA和 RLB只是保留了一個引用只是引用了同一個對象因此對RLB的修改會影響RLA

  下面說一下值類型和引用類型的組成部分

  值類型主要有兩類組成

  · 結構

  ·枚舉

  結構分為下面幾類

  ·Number(數值)類型

  ·Bool

  ·用戶自定義的結構

  其中數值類型又包括整數浮點數decimal

  先寫到這裡接下來講述的是out和ref的區別


From:http://tw.wingwit.com/Article/program/net/201311/13110.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.