Esempio n. 1
0
        public object Clone()
        {
            CopyClass newCopy = new CopyClass();

            newCopy.value1 = this.value1;
            newCopy.value2 = this.value2;

            return(newCopy);
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            /* 1. 얇은 복사 */
            Console.WriteLine("====================== 얇은 복사 ======================");
            Console.WriteLine();
            Console.WriteLine();

            CopyClass shallow      = new CopyClass(); //source객체 생성
            CopyClass shallow_copy = new CopyClass(); //target객체 생성

            shallow_copy = shallow;                   //객체 복사

            Console.WriteLine("=== 값 변경 전 ===");
            Console.WriteLine("shallow.value1 = " + shallow.value1 + ", " + "shallow.value2 = " + shallow.value2);
            Console.WriteLine("shallow_copy.value1 = " + shallow_copy.value1 + ", " + "shallow_copy.value2 = " + shallow_copy.value2);
            Console.WriteLine();

            shallow_copy.value1 = 20; //복사본(target의 객체의 value1값을 변경(10 -> 20)

            Console.WriteLine("=== 값 변경 후 ===");
            Console.WriteLine("shallow.value1 = " + shallow.value1 + ", " + "shallow.value2 = " + shallow.value2);
            Console.WriteLine("shallow_copy.value1 = " + shallow_copy.value1 + ", " + "shallow_copy.value2 = " + shallow_copy.value2);
            Console.WriteLine(); //원본(source)객체의 값도 같이 변경
            Console.WriteLine();

            /* 2. 깊은 복사 */
            Console.WriteLine("====================== 깊은 복사 ======================");
            Console.WriteLine();
            Console.WriteLine();

            CopyClass deep      = new CopyClass();
            CopyClass deep_copy = new CopyClass();

            deep_copy = (CopyClass)deep.Clone();

            Console.WriteLine("=== 값 변경 전 ===");
            Console.WriteLine("shallow.value1 = " + deep.value1 + ", " + "shallow.value2 = " + deep.value2);
            Console.WriteLine("shallow_copy.value1 = " + deep_copy.value1 + ", " + "shallow_copy.value2 = " + deep_copy.value2);
            Console.WriteLine();

            deep_copy.value1 = 30; //복사본(target의 객체의 value1값을 변경(10 -> 30)

            Console.WriteLine("=== 값 변경 후 ===");
            Console.WriteLine("shallow.value1 = " + deep.value1 + ", " + "shallow.value2 = " + deep.value2);
            Console.WriteLine("shallow_copy.value1 = " + deep_copy.value1 + ", " + "shallow_copy.value2 = " + deep_copy.value2);
            Console.WriteLine(); //원본(source)객체의 값은 영향을 주지 않는다.
            Console.WriteLine();
        }