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

值類型與引用類型的區別(基於C#)

編輯:C#入門知識

                                                                          值類型與引用類型的區別(基於C#)            1.類型分布            C#中值類型包含以下類型:簡單類型、結構類型(struct)、枚舉類型(enum)。            其中簡單類型包含:整數類型(int),布爾類型(bool),字符類型(char),實數類型(double,decimal),結構和枚舉不必多說,結構就是分裝用來存儲小的變量組,枚舉你懂得。                      C#中引用類型包含以下類型:類,接口,數組和委托,這些都屬於引用類型。              2.存儲            C#中值類型存儲的是值,值類型通常被分配在堆棧上。            C#中引用類型的實例分配在堆上,新建一個引用類型實例,得到的變量值對應的是該實例的內存分配地址,這就像您的銀行賬號一樣。                      3.Demo using System; using System.Collections.Generic; using System.Text;   namespace ConsoleApplication1 {     class Person     {         public int Blood = 10;         }       class Program     {         public static void Add(int x)         {             x += 10;             Console.WriteLine("值類型當參數被傳遞並修改之後:"+x);         }           public static void Add(Person person)         {             person.Blood += 10;             Console.WriteLine("引用類型當參數被傳遞並修改之後:" + person.Blood);         }           static void Main(string[] args)         {             //值類型變量             int i = 10;               Console.WriteLine("i的原值:" + i);             Add(i);             Console.WriteLine("但是i的值並沒有因為函數的修改而修改:" + i);               //引用類型變量             Person person = new Person();               Console.WriteLine("Blood的原值:" + person.Blood);             Add(person); www.2cto.com             Console.WriteLine("但是Blood的值因為函數的修改而修改:" + person.Blood);               //值類型和引用類型的區別,就在於當函數參數傳遞的時候.             //值類型是把自己的值復制一份傳遞給別的函數操作.無論復制的值怎麼被改變.其自身的值是不會改變的             //而引用類型是把自己的內存地址傳遞給別的函數操作.操作的就是引用類型值的本身.所以值被函數改變了.             //這就是傳值和傳址的區別               Console.ReadLine();         }     } }           

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