深入C#資料型別! ! 李四為何自己new物件?
阿新 • • 發佈:2021-01-22
技術標籤:c#
若有所思:
- 張三李四倆哥們去年相同身高體重,今年李四長高10cm,增重10kg
double[] zs = {170,60};
double[] ls = zs;
Console.WriteLine("去年,張三的身高為:{0},張三的體重為{1}",zs[0],zs[1]);
Console.WriteLine("去年,李四的身高為:{0},李四的體重為:{1}", ls[0], ls[1]);
ls[0] = 180;
ls[1] = 70;
Console.WriteLine("今年,張三的身高為:{0},張三的體重為{1}", zs[0],zs[1]);
Console.WriteLine("今年,李四的身高為:{0},李四的體重為:{1}", ls[0], ls[1]);
執行結果如下:
存在問題!!!張三和李四共用同一段儲存空間!
解決方案:
double[] zs = {170,60};
double[] ls = zs;
Console.WriteLine("去年,張三的身高為:{0},張三的體重為{1}",zs[0],zs[1]);
Console.WriteLine("去年,李四的身高為:{0},李四的體重為:{1}", ls[0], ls[1]);
ls = new double[2];
ls[0] = 180;
ls[1] = 70;
Console.WriteLine("今年,張三的身高為:{0},張三的體重為{1}",zs[0],zs[1]);
Console.WriteLine("今年,李四的身高為:{0},李四的體重為:{1}", ls[0], ls[1]);
溫馨小貼士:
- 雖然double是一個值型別,但double[] 是陣列屬於引用型別
- 引用型別,賦值是把原物件的引用傳遞給另一個引用
-對於陣列而言,當一個數組引用賦值給另一個數組引用後,這兩個引用指向同一塊儲存空間,也就是指向同一塊儲存空間!
(所以我們將李四例項化一個物件便可以將其開闢一塊儲存空間解決問題)