Это будет пример, копирующий член 'Attr' при создании нового объекта.

жный дубликат:
Как вы делаете глубокую копию объекта в .Net (в частности, C #)?

Пожалуйста, взгляните на код ниже (отрывок из книги C #):

namespace Example {
    class MyClass {
        public int val;
    }

    struct myStruct {
        public int val;
    }

    class Program {
        static void Main(string[] args) {
            MyClass objectA = new MyClass();
            MyClass objectB = objectA;
            objectA.val = 10;
            objectB.val = 20;
            myStruct structA = new myStruct();
            myStruct structB = structA;
            structA.val = 30;
            structB.val = 40;
            Console.WriteLine("objectA.val = {0}", objectA.val);
            Console.WriteLine("objectB.val = {0}", objectB.val);
            Console.WriteLine("structA.val = {0}", structA.val);
            Console.WriteLine("structB.val = {0}", structB.val);
            Console.ReadKey();
        }
    }
}

Я понимаю, что выдает результат ниже

objectA.val = 20
objectB.val = 20
structA.val = 30
structB.val = 40

Последние две строки вывода у меня нет проблем, но первые две говорят мне, чтоobjectA а такжеobjectB указывают на один и тот же блок памяти (поскольку в C # объекты являются ссылочными типами).

Вопрос в том, как сделатьobjectB, копияobjectA так что это указывает на другую область в памяти. Я понимаю, что попытка назначить их участников может не сработать, так как эти участники тоже могут быть ссылками. Итак, как мне сделатьobjectB совершенно другая сущность изobjectA?

Спасибо

Ответы на вопрос(0)

Ваш ответ на вопрос