C# 怎么取消同类之间的引用,除了在类里写=重载或copy函数

代码如下:

     public class MyClass {
        public int x = 0;
    }

    class Program {
        static void Main(string[] args) {

            MyClass a = new MyClass();
            MyClass b = new MyClass();

            a.x = 1;

            b = a;
            b.x = 2;

            Console.WriteLine(a.x);
            Console.WriteLine(b.x);

            Console.ReadKey();
        }
    }
  • 打印出来就是2 2;
  • 怎么才能打印出1 2呢?
  • 除了在类里写=重载或copy函数,难道C#里没有自带的吗?

public class MyClass
->
public static MyClass

b=a是浅复制,b只是复制了a的引用地址,你在进行修改的数据后,a引用了这个数据被修改后的地址所以a.x发生变化,你可以用b.x=a.x进行赋值

重写Object的copy()方法