MemberwiseClone和Guids

RJP*_*RJP 0 c#

如果我执行以下操作:

var item2 = item1.MemberwiseClone();
item2.ID = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)

无论什么新东西Guid item2,它也会改变它item1.这是不正确的,因为a Guid是值类型?这种情况发生在GuidGuid?.

Can*_*ide 5

您的实施一定有问题.这是一个演示用法的示例:

class Program
{
    class A 
    {
        public Guid ID { get; set; }

        public A Clone()
        {
            return (A)this.MemberwiseClone();
        }
    }

    static void Main(string[] args)
    {
        var item1 = new A();
        item1.ID = Guid.NewGuid();

        var item2 = item1.Clone();
        item2.ID = Guid.NewGuid();

        Console.WriteLine(item1.ID);
        Console.WriteLine(item2.ID);

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您将代码作为控制台应用程序运行,您将看到Guids因文档说明而有所不同.