질문:

같은 형식의 클래스나 구조체를 받는 객체를 2개

생성해서 그것들을 값에의한 참조하는 법을 알고 싶습니다.

단순히 a=b와 같이 한다면 둘이 같은 것을 가리키기 때문에 그방법

말고 주소는 다르되 값만 복사되는 것이 궁금해요.

물론 그 안에 변수등을 일일히 대입해주는 방법 말구요...

 

답변:

복사 생성자를 말씀하시는 것 같습니다. 시샵은 복사 생성자의 개념을 이용하지 않습니다. 다른 방법이있다면, 모든 시샵 클래스는object를 부모 클래스로 두는 것을 염두에 두시면, object 클래스의 Clone() 또는 MemberwiseClone 메서드를 이용해야 할 것 같습니다. 그러기 위해서는ICloneable interface를 상속해서 구현해야합니다.

사용 예제 입니다.

class A : System.ICloneable

{

private int foo = 10;

public int Foo

{

get { return foo; }

set {foo = value; }

}

public A(){}

#region ICloneable Members

public object Clone()

{

// TODO: Add A.Clone implementation

return this;

}

#endregion

}

static void Main(string[] args)

{

A a = new A();

// Cloneobject 리턴하므로 형변환이 필요합니다.

A b = (A)a.Clone();

Console.WriteLine("{0}, {1}", a.Foo, b.Foo);

a.Foo = 50;
Console.WriteLine("{0}, {1}", a.Foo, b.Foo);

}

결과: 10, 10

50, 50

'프로그래밍 > .Net' 카테고리의 다른 글

string vs StringBuilder 성능차이  (0) 2014.01.17
Registry 사용하기  (0) 2014.01.17
string 문자열 파싱해보자  (0) 2014.01.17
c# 소멸자 만들기  (0) 2014.01.17
delegate 활용 함수 콜..  (0) 2014.01.17

+ Recent posts