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”,恰恰因为它们的“地址”没有半毛钱关系... --------------------编程问答-------------------- 值类型只保存值本身不保存地址。
值类型在内存中都是独立的,不会出现两个值类型指向同一个值。 --------------------编程问答-------------------- 不会出现两个值类型指向同一块内存 --------------------编程问答--------------------
我只想实现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
我实际的问题不是int,而是IDictionary
现在的做法是自己写了个copy值的函数,大致如下:
void CopyDict(IDictionary source, ref IDictionary dest)
{
foreach (KeyValuePair pair in source)
{
dest.Add(pair.Key, pair.Value);
}
}
不知道有没有简单点的方法?
补充:.NET技术 , C#