你说的那个val修饰没有。不过你可以在Customer类中实现ICloneable接口的Clone 方法,以后用起来就方便了。
public class Customer:ICloneable
{}用的时候,
Customer c1 = new Customer();
c1.Name = "1";Customer c2 = c2.Clone();
这样就实现了值拷贝了。
public class Customer:ICloneable
{}用的时候,
Customer c1 = new Customer();
c1.Name = "1";Customer c2 = c2.Clone();
这样就实现了值拷贝了。
你的这个思路看起来很好,但是我对接口不熟悉,一时间不知道中间的那段代码应该如何写,能说说具体实现吗?
谢谢。
using System;
class CloneObject
{
public static void Main()
{
A a1 = new A();
a1.i = 2;
A a2 = (A)a1.Clone(); Console.WriteLine( a2.i );
Console.ReadLine(); }
}class A:ICloneable
{
public int i; #region ICloneable 成员 public object Clone()
{
A a = new A();
a.i = i; return a;
} #endregion}
因为 struct 是值类型,不会出现你一开始所提到的问题。
不过,所带来的其他因为值类型与引用类型的不同,一定要注意。班兄提到的实现 IClonable 方案值得一用。另外,如果你的 BOSS 改了一个字段名,你也不用那么怕麻烦,因为这种事情在开发过程中经常会碰到的。
你可使用 Ctrl + Shift + H 来打开 “在文件中替换”对话框,选择在整个工程、方案、或其它自定义替换范围等方式来进行批量替换。