질문:
같은 형식의 클래스나 구조체를 받는 객체를 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();
// Clone은 object 리턴하므로 형변환이 필요합니다.
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 |