今天突然注意倒一个问题,可能有些简单,请大家帮我解答一下;
大家都知道这样传的是值的副本,例子如下: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)
{
////数据绑定操作
}这样做了以后为什么数据会绑定上去了呢?我真是百思不得其解,请大家帮忙!!

解决方案 »

  1.   

    void Main()
    {
     int a = 0;
    Add(a);}
    void Add(int b)
    {
    b=b+1;
    }结果1
      

  2.   

    int是值类型DropDownList是类这就是区别~~
      

  3.   

    int是值类型DropDownList是类这是区别1。
    如果DropDownList那个方法里面是new = DropDownList(...);那操作肯定也影响不到外面来。值传递,是说传递的是堆栈里的那个东西,值类型堆栈里就是存的它本身,所以传过来的是此值的拷贝,而引用类型堆栈里的是一个指向堆的引用(相当于地址,指南),传过来也是一个地址的拷贝,所以函数内是一个函数外的地址的拷贝(即他们是两个指向同一地址的引用),如果函数内是通过此地址来改变堆里面的内容,当然外面也感觉得到。如果此地址重新指向一个其它地址,则就跟外面没关系了。
      

  4.   

    a传的副本,DropDownList传的相当于地址!!其实就是传值和引用的区别
      

  5.   

    嗯,类是引用,
    void Bind(DropDownList drop)
    {
    ////数据绑定操作
    }
    相当于
    void Bind(ref DropDownList drop)
    {
    ////数据绑定操作
    }