关于方法参数的传递问题

Lansie 2007-12-19 02:43:25
有个问题想问一下
C#方法中参数的传递默认是值传递,但遇到下面个问题有点不解
class WrapTest
{
public int num = 1;

}

class Program
{
public static void Test1(WrapTest t)
{
t.num = 222;
}

public static void Test2(WrapTest t)
{
WrapTest test = new WrapTest();
test.num = 333;
t = test;
}
static void Main(string[] args)
{
WrapTest t1 = new WrapTest();
t1.num = 111;
Test1(t1);
Test2(t1);
Console.WriteLine(t1);
}
}

Test1(t1)后t1.num变为222了
Test2(t1)后t1.num还是222了
而t1是一个WrapTest实例的引用变量,那么Test2执行完后t1应该指向Test2中生成的对象,也即t1.num应该为333啊
不知道上述的理解哪里出问题了,请各位大侠指教,谢谢!
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hapen_zhang 2007-12-19
  • 打赏
  • 举报
回复
MS用out才对,-_-||
hapen_zhang 2007-12-19
  • 打赏
  • 举报
回复

public static void Test2(ref WrapTest t) //
{
WrapTest test = new WrapTest();
test.num = 333;
t = test;
}

北京的雾霾天 2007-12-19
  • 打赏
  • 举报
回复
test2中的参数t在函数内被迫叛变了,不再为原来的主人办事了!

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧