程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 對於C#中b=a的N種情況分析

對於C#中b=a的N種情況分析

編輯:C#入門知識

本文旨在驗證一個容易混淆的概念,從而為玩轉WPF/Silverlight中INotifyProperty做鋪墊。

      兩個相同類型的變量a和b,並且有如下關系: 

      b = a;

      如果a發生改變,b是否也發生改變呢?

      情況很復雜,分以下幾種情況談論:

      1) 單個實體

            1. 簡單類型

            先考察int:

            int a = 1;
            int b = a;

            a = 2;
            Console.WriteLine("b: " + b);

            輸出結果:

            clip_image002

            再考察一下string:

            string a = "1";
            string b = a;

            a = "2";
            Console.WriteLine("b: " + b);

            輸出結果:

            clip_image002[1]

            如果不放心,還可以測試一下Enum,結果類似,詳見Demo。

            結論:簡單類型是組成復合類型的最基本單位,是原子,不可再拆分,所以不管是值類型double、int還是引用類型string,b都不隨a的改變而改變,因為它們指向全局堆棧(對於string而言是托管堆)上的同一個地址。

            2. 復合類型

            復合類型是由string、int、double這些簡單類型組成的。

            分別定義一個復合的引用類型(class)和一個復合的值類型(struct)。 

        class UserInfo
        {
            public string UserName;
            public int Age;
        }

        struct UserInfo2
        {
            public string UserName;
            public int Age;
        }


            先討論引用類型: 

     

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