0

私が次のことをした場合:

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

新しいものGuid item2が何であれ、それはそれを変えるでしょうitem1Guidaは値型なので、これは正しくありませんか? これは と の両方Guidで起こりGuid?ます。

4

1 に答える 1

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();
    }
}

コードをコンソール アプリとして実行すると、ドキュメントに記載されているように Guid が異なることがわかります。

于 2012-12-05T16:39:57.170 に答える