void caller() { int aa, bb, cc; aa = 1; bb = 2; cc = 3; foo(ref aa, out bb, cc); System.Diagnostic.Debug.Writeline(aa.ToString()); // 4 System.Diagnostic.Debug.Writeline(bb.ToString()); // 5 System.Diagnostic.Debug.Writeline(cc.ToString()); // 3}void foo(ref int a, out int b, int c) { a = 4; b = 5; //必须对out值先赋值在使用,否则会出错。此外必须在退出该函数之前对他赋值 //否则也出错。 c = 6; }
{
int aa, bb, cc;
aa = 1;
bb = 2;
cc = 3; foo(ref aa, out bb, cc);
System.Diagnostic.Debug.Writeline(aa.ToString()); // 4
System.Diagnostic.Debug.Writeline(bb.ToString()); // 5
System.Diagnostic.Debug.Writeline(cc.ToString()); // 3}void foo(ref int a, out int b, int c)
{
a = 4;
b = 5; //必须对out值先赋值在使用,否则会出错。此外必须在退出该函数之前对他赋值
//否则也出错。
c = 6;
}
还有一问:
那个c不变是不是因没有ref就只是传值?用ref就是传地址?