C#中值類型與引用類型


  1. 值類型

A,像int, float, char , double,bool等都是值類型

B,string, 自定義類等都是引用類型

它們的區別:源於復制策略的不同,

值類型直接包含值,換言之,變量引用的位置就是值在內存中實際存儲的位置。因此,將一個原始變量的值賦給另一個變量,會在新變量的位置創建原始變量的值的一個內存副本。兩個變量不可能引用同一個內存位置(除非其中一個或兩個都是out或ref參數;根據定義,這種參數是另一個變量的別名),更改原始變量的值不會影響另一個變量的值,變量各有各的存儲位置。因此,改變一個值類型變量的值不會影響其他任何值類型的值。

  2.引用類型

 對於引用類型的變量,它的值是對一個對象實例的引用,引用類型的變量存儲的是引用(通常是內存地址),要去那個位置找到對象實例的數據。

  1. 自定義值類型的重要性

兩種自定義值類型

A, 結構體(struct),B,枚舉(enum)

         聲明結構

         //use keword struct to declare a value type

struct Angle

{

         public Angle(int degrees,int minutes,int seconds)

         {

                   _Degrees = degrees;

                   _Minutes = minutes;

                   _Seconds = seconds;

         }

        

         public int Degrees

         {

                   get{ return _Degrees; }

         }

         private int _Degrees;

        

         public int Minutes

         {

                   get{ return _Minutes;}

         }

         private int _Minutes;

        

         public int Seconds

         {

                   get{ return _Seconds;}

         }

         private int _Seconds;

 

public Angle Move(int degrees, int minutes, int seconds)

         {

                   return new Angle(

                            Degrees + degrees,

                            Minutes + minutes,

                            Seconds + seconds

                   )

         }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM