当前位置:编程学习 > C#/ASP.NET >>

C#中关于引用的问题

代码如下 

int a, b;
a = new int();
b = a;
b = 1;

在b=1后我的本意是希望a也为1,但实际上我b=a只是拷贝了地址,a的值还是0.

但在c++中就可以用*b=1来实现,请问c#中有类似的方法吗?

int *a, *b;
a = new int();
b = a;
*b = 1;

--------------------编程问答-------------------- 使用不安全代码也可以这么干 --------------------编程问答-------------------- int是值类型,不是引用类型 --------------------编程问答-------------------- 你完全理解错了...这里没有什么“拷贝地址”的概念...

值类型赋值就是复制“值”...这里只所以“a的值还是0”,恰恰因为它们的“地址”没有半毛钱关系... --------------------编程问答-------------------- 值类型只保存值本身不保存地址。
值类型在内存中都是独立的,不会出现两个值类型指向同一个值。 --------------------编程问答-------------------- 不会出现两个值类型指向同一块内存 --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
int是值类型,不是引用类型

我只想实现c++中

int *a, *b;
a = new int();
b = a;
*b = 1;

这种功能。 --------------------编程问答-------------------- 可以装箱...但完全没必要,栈操作比堆操作快得多,多赋一次值比你装来拆去好得多... --------------------编程问答-------------------- int是值类型,不是引用类型
--------------------编程问答--------------------
通过传递引用来实现吧

public void PassRefInt(ref int i1, ref int i2)
    {
        i1 = i2;
    }

 int a = 12;
            int b = 34;
            PassRefInt(ref a, ref b);
            Response.Write(a);

//34
--------------------编程问答--------------------
引用 9 楼 rczjp 的回复:
C# code
通过传递引用来实现吧

public void PassRefInt(ref int i1, ref int i2)
    {
        i1 = i2;
    }

 int a = 12;
            int b = 34;
            PassRefInt(ref a, ref b);
            Response.Write……

我实际的问题不是int,而是IDictionary
现在的做法是自己写了个copy值的函数,大致如下:

void CopyDict(IDictionary source, ref IDictionary dest)
{
     foreach (KeyValuePair pair in source)
     {
         dest.Add(pair.Key, pair.Value);
     }
}

不知道有没有简单点的方法?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,