今天突然注意倒一个问题,可能有些简单,请大家帮我解答一下;
大家都知道这样传的是值的副本,例子如下:void Main()
{
int a = 0;
Add(a);}
void Add(int b)
{
b=b+1;
}运算出来的结果是a依然是0;但是:
void Main()
{
DropDownList dropExample;
Bind(dropExample);
}void Bind(DropDownList drop)
{
////数据绑定操作
}这样做了以后为什么数据会绑定上去了呢?我真是百思不得其解,请大家帮忙!!
大家都知道这样传的是值的副本,例子如下:void Main()
{
int a = 0;
Add(a);}
void Add(int b)
{
b=b+1;
}运算出来的结果是a依然是0;但是:
void Main()
{
DropDownList dropExample;
Bind(dropExample);
}void Bind(DropDownList drop)
{
////数据绑定操作
}这样做了以后为什么数据会绑定上去了呢?我真是百思不得其解,请大家帮忙!!
解决方案 »
- 触发回传事件的问题(再次发帖!)
- 新手求助!数据库更新问题!!
- LINKBUTTON要点2下才能触发事件
- 散分,晕菜在设计模式中,学了用不上,很快就忘。
- App_Code里面的cs类引用请教
- ajaxpro.2.dll无法识别类名
- 页面问题,
- ◆◆◆有山西太原的asp.net爱好者吗?我越来越发现交流的重要性◆◆◆
- 安装过《asp.net web站点高级编程 提出问题--设计方案--解决方案》源码和数据库的来看看,它的用户管理部分好象有错误!
- Web窗体中的DataGrid的UpdateCommand事件为何不响应?
- 请教(加急):如何列示出IIS某个虚拟目录下的所有目录及文件,以供用户选择文件,获取文件的相对链接地址??
- .net下的16位md5如何使用?
{
int a = 0;
Add(a);}
void Add(int b)
{
b=b+1;
}结果1
如果DropDownList那个方法里面是new = DropDownList(...);那操作肯定也影响不到外面来。值传递,是说传递的是堆栈里的那个东西,值类型堆栈里就是存的它本身,所以传过来的是此值的拷贝,而引用类型堆栈里的是一个指向堆的引用(相当于地址,指南),传过来也是一个地址的拷贝,所以函数内是一个函数外的地址的拷贝(即他们是两个指向同一地址的引用),如果函数内是通过此地址来改变堆里面的内容,当然外面也感觉得到。如果此地址重新指向一个其它地址,则就跟外面没关系了。
void Bind(DropDownList drop)
{
////数据绑定操作
}
相当于
void Bind(ref DropDownList drop)
{
////数据绑定操作
}