Notice
- Today
- Total
Recent Posts
Recent Comments
Link
Tags
- usb 인식 불가
- .mine
- ubuntu
- Image icon 변환
- node.js 설치
- OpenFileDialog
- startActivity
- 동영상 오류
- 자동 닫힘
- Ribbon
- ScrollBarTrackPolicy
- MariaDB
- Spread
- ImageList Icon 변환
- onPageFinished
- UltraToolbarsManager
- mariaDB 외부접속
- mariaDB 설치
- node.js
- 다중 Filter
- OSHP
- RaspberryPi
- <<<<<<<<
- c#
- 라즈베리 피이
- 라즈베리파이
- mp4 재생
- Raspberry Pi
- ContextMenuStrip
- WebViewClient
Archives
Realman's World
[C#] Shallow Copy 구현(얕은 복사) 본문
C# 코딩을 하다보면 가끔씩 C++이 그리워 질때가 있다.
그 중의 하나가 Shallow Copy가 지원되지 않을 때이다.
C#은 항상 참조 연산이 된다.
때문에 같은 메모리를 사용한다. 이로 인해 저장한 변수를 변경하면 기존의 변수까지 변경된다.
(쉽게 말해 인스턴스를 다른 변수에 저장할 때 껍데기만 바뀔 뿐 속성은 그대로라는 말이다.)
이때 ICloneable을 사용하면 이를 해결할 수 있다.
우선, 해당 클래스를 ICloneable의 상속을 받게하고 Clone() 메소드를 선언한다.
이 후 해당 클래스를 복사할 때는 Clone() 메소드를 사용하면 된다.
그 중의 하나가 Shallow Copy가 지원되지 않을 때이다.
C#은 항상 참조 연산이 된다.
때문에 같은 메모리를 사용한다. 이로 인해 저장한 변수를 변경하면 기존의 변수까지 변경된다.
(쉽게 말해 인스턴스를 다른 변수에 저장할 때 껍데기만 바뀔 뿐 속성은 그대로라는 말이다.)
이때 ICloneable을 사용하면 이를 해결할 수 있다.
우선, 해당 클래스를 ICloneable의 상속을 받게하고 Clone() 메소드를 선언한다.
public class Test : ICloneable
{
{
private int a = 0;
private int b = 1;
public object Clone()
{
private int b = 1;
public object Clone()
{
this.MemberwiseClone();
}
}
이 후 해당 클래스를 복사할 때는 Clone() 메소드를 사용하면 된다.
Test cpyTest = (Test)oriTest.Clone();
Comments