class a { public int b; public a() { b=1; } } class test { static void changvalue(a temp) { temp.b=temp.b+1; } public static void Main() { a param=new a(); Console.WriteLine("old value:{0}",param.b); changvalue(param); Console.WriteLine("new value:{0}",param.b); } }
上面那代码的的输出是: old value:1 new value:2为什么,我并没有使用: static void changvalue(ref a temp) //引用 { temp.b=temp.b+1; }但为什么值会变呢? 同样的程序换成:class test { static void changvalue(int temp) { temp=temp+1; } public static void Main() { int param=0; Console.WriteLine("old value:{0}",param); changvalue(param); Console.WriteLine("new value:{0}",param); } } 这种情况下,因为没用ref,param的值是不会变的。int类型同样都是类,为什么会有这种差别?
public void xxx(TextBox textBox)
{
textBox.Text = "xxx";
}
将系统控件作为参数进行传递,无需引用,控件的属性也会被更改。
你使用了 "private",我想你是在同一个类中进行试验的,放在外部试试?不肯能的,连 int[] 数组都不行,必须要加 ref 引用。
好像是楼主我回答问题了,就的给我分一样:)to
jeky123(jeky)
难道你认为是深拷贝??,,为什么在函数体内不能改变它的值?
{
public int b;
public a()
{
b=1;
}
} class test
{
static void changvalue(a temp)
{
temp.b=temp.b+1;
}
public static void Main()
{
a param=new a();
Console.WriteLine("old value:{0}",param.b);
changvalue(param);
Console.WriteLine("new value:{0}",param.b);
}
}
上面那代码的的输出是:
old value:1
new value:2为什么,我并没有使用:
static void changvalue(ref a temp) //引用
{
temp.b=temp.b+1;
}但为什么值会变呢? 同样的程序换成:class test
{ static void changvalue(int temp)
{
temp=temp+1;
}
public static void Main()
{
int param=0;
Console.WriteLine("old value:{0}",param);
changvalue(param);
Console.WriteLine("new value:{0}",param);
}
}
这种情况下,因为没用ref,param的值是不会变的。int类型同样都是类,为什么会有这种差别?