C#中int是值類型,類是引用類型。
如下一段代碼:
//------------------------------------------引用類型部分
MaterialMOD modM = new MaterialMOD();//創建MaterialMOD實體對象
getMod(modM);//賦值
Response.Write(modM.Name);//輸出結果:李四
/// <summary>
/// 給Name賦值
/// </summary>
/// <param name="m"></param>
public void getMod(MaterialMOD m)
{
m.Name = "李四";
}
//-------------------------------------------值類型部分
int i = 0;
Add(i);
Response.Write(i);//輸出結果:0
/// <summary>
/// 賦值累加
/// </summary>
/// <param name="Num"></param>
public void Add(int Num)
{
Num = Num + 2;
}
//---------------------------------個人理解
Add方法,改變的是變量Num的值,因爲Num和i 是值類型,存儲的都是實際的值。改變的只是Num的值,所以 並不會改變 i 變量的值。
getMod方法,改變變量m的值,因爲m和modM都是類對象,是引用類型,兩者在內存中分配的是同一塊地址,改變m的值,實際上是改變m在內存地址中的值、而modM和m用的是同一塊內存地址,所以modM的值也跟着變了。