using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace 值傳遞和引用傳遞
{internal class Program{static void Main(string[] args){person P1=new person();P1.name = "張三";person P2 = P1;P2.name = "李四";Console.WriteLine(P1.name);Console.WriteLine(P2.name);//拆裝箱int n = 10;object o = n;int nn = (int)o;//拿什么裝的拿什么拆// double oo = (double)o;double oo = (double)nn;Console.WriteLine(nn);Console.WriteLine(oo);Console.ReadKey();}public class person {public string name{get;set;}}}
}
代碼分析1
- 創建對象:
person P1 = new person();
?創建一個新的?person
?對象,并將?P1
?設置為引用該對象。
- 設置屬性:
P1.name = "張三";
?設置?P1
?引用的對象的?name
?屬性為 "張三"。
- 引用賦值:
person P2 = P1;
?將?P2
?設置為引用與?P1
?相同的對象。此時,P1
?和?P2
?都指向同一個對象。
- 修改屬性:
P2.name = "李四";
?修改?P2
?引用的對象的?name
?屬性為 "李四"。由于?P1
?和?P2
?引用的是同一個對象,因此?P1.name
?也會變為 "李四"。
- 輸出結果:
Console.WriteLine(P1.name);
?和?Console.WriteLine(P2.name);
?都會輸出 "李四",因為它們引用的是同一個對象。
代碼分析2
- 變量?
n
?的定義: int n = 10;
?定義一個整數變量?n
,并初始化為 10。
- 裝箱操作:
object o = n;
?將整數?n
?裝箱到?object
?類型的變量?o
?中。裝箱是將值類型轉換為引用類型的過程。
- 拆箱操作:
int nn = (int)o;
?將?object
?類型的變量?o
?拆箱為?int
?類型的變量?nn
。拆箱是將引用類型轉換回原始值類型的過程。
- 類型轉換:
double oo = (double)nn;
?將?int
?類型的變量?nn
?轉換為?double
?類型的變量?oo
。由于?int
?可以隱式轉換為?double
,因此顯式轉換是安全的。
- 輸出結果:
Console.WriteLine(nn);
?輸出?nn
?的值,即 10。Console.WriteLine(oo);
?輸出?oo
?的值,即 10.0。