class A
{public int n;};A x=new A;
A y;
y=x;这个时候y和x都指向同一个引用,如果再添加下面两个语句:
y.n=3;
Console.WriteLine(x.n); //注意:括号里是x.n不是y.n
此时输出结果是3而不是0;对于此例,在C++中y=x;语句只是简单的值复制(浅拷贝),x和y是不同的对象,都有为自己分配的存储空间.
但是C#中x和y指向同一个对象的引用的事实此时不是我想要的.我想在y=x;这个语句执行完后有C++那种浅拷贝的效果,我不想重载=然后在它里面用new开辟空间,把成员值一个一个复制到这个新对象上,最后再返回这个对象.请问我应该怎么做?(刚接触C#,可能C#里面有非常简单的方法实现这个作用,不过我不知道)
{public int n;};A x=new A;
A y;
y=x;这个时候y和x都指向同一个引用,如果再添加下面两个语句:
y.n=3;
Console.WriteLine(x.n); //注意:括号里是x.n不是y.n
此时输出结果是3而不是0;对于此例,在C++中y=x;语句只是简单的值复制(浅拷贝),x和y是不同的对象,都有为自己分配的存储空间.
但是C#中x和y指向同一个对象的引用的事实此时不是我想要的.我想在y=x;这个语句执行完后有C++那种浅拷贝的效果,我不想重载=然后在它里面用new开辟空间,把成员值一个一个复制到这个新对象上,最后再返回这个对象.请问我应该怎么做?(刚接触C#,可能C#里面有非常简单的方法实现这个作用,不过我不知道)
解决方案 »
- 正则表达式中文汉字匹配问题
- 对搜索引擎的分析
- 高手请进,一个很难的问题关于条件编译.
- 在C#中如何实现进程间的通讯,比如wm_copydata消息
- 了解无限上网卡
- 续:来,做道题目试试看,看看自己是不是高手
- 能否写一个最简单功能的三层结构小程序(C# Winform)让我学习?
- Dataset.Merge(ds);出了问题,"<target>.CommentTime 和 <source>.CommentTime 的属性冲突: DataType 属性不匹配。"
- WPF,这个对齐方式为什么不听使唤
- 请高手帮帮忙好吗?
- datagrid 里更新按钮触发datagrid里面的的验证事件,而不触发datagrid外面的验证事件
- 请问如何通过C#控制windows的pppoe控件拨号,万分火急,高分相酬,多谢!
这个不行啊~~~~
======这上面的事正是你需要做的。
public object Clone()
{
return this.MemberwiseClone();
}
//把object换成你具体要Clone的类型.
以上方法为浅拷贝