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的值也跟着变了。