默认情况下 值类型传递的是拷贝 对像传递的是引用下面写了一个简单的不知道你看不看得懂 public class ABC { public int A; } public void change(ABC a) { a.A = 20; } public void change(int a) { a = 20; } private void button2_Click(object sender, EventArgs e) { int a = 10; ABC bb = new ABC(); bb.A = 10; change(a); change(bb); MessageBox.Show(a.ToString()); MessageBox.Show(bb.A.ToString()); }
public partial class Default3 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { int a = 9; int b = a; bool r= object.ReferenceEquals(a,b); if (r) { Response.Write("引用类型!"); } else { Response.Write("值类型!"); } car mycar = new car(); object obj = mycar; bool s = object.ReferenceEquals(mycar,obj); if (s) { Response.Write("引用类型!"); } else { Response.Write("值类型!"); } } } public class car { public car() { } }
你给我的答案却是用传递引用给我解释的?? 你给方法传递的参数总有个类型签名吧,如果是 基本类型的签名 那传递的就是值copy,如果是对象类型,传递的就是这个对象的引用, public void MethodA(int i,DateTime d){
改变i的值,
改变d的值
}int ii=10;
DateTime dt=new DateTime();
MethodA(ii,dt);方法调用完毕后,ii的值还是10,
但是dt的值已经变成你在方法中设定的值了。
值类型传递的是拷贝
对像传递的是引用下面写了一个简单的不知道你看不看得懂 public class ABC
{
public int A; } public void change(ABC a)
{
a.A = 20;
} public void change(int a)
{
a = 20;
} private void button2_Click(object sender, EventArgs e)
{ int a = 10; ABC bb = new ABC();
bb.A = 10; change(a);
change(bb); MessageBox.Show(a.ToString());
MessageBox.Show(bb.A.ToString()); }
{
protected void Page_Load(object sender, EventArgs e)
{
int a = 9;
int b = a;
bool r= object.ReferenceEquals(a,b);
if (r)
{
Response.Write("引用类型!");
}
else
{
Response.Write("值类型!");
} car mycar = new car();
object obj = mycar;
bool s = object.ReferenceEquals(mycar,obj);
if (s)
{
Response.Write("引用类型!");
}
else
{
Response.Write("值类型!");
}
}
}
public class car
{
public car()
{ }
}