프로그램/C# 2013. 3. 25. 22:05

C# 깊은복사

출처:http://ksh6438.blog.me/20166470651

위 출처작성자와 본글 작성자 동일

 

깊은 복사 참조 타입은 값 타입과는 달리 대입에 의해 똑같은 객체를 생성할 수 없다. 

참조 타입끼리의 대입은 힙에 있는 객체의 번지만을 대입하는 것이므로 두 객체는 같은 대상을 

가리키고 있으며 그래서 한 쪽을 변경하면 다른 쪽도 같이 영향을 받는다. 

참조만 복사하는 이런 복사를 얕은 복사라고 한다. 대입에 의해 완전히 독립적인 사본을 생성하려면 

깊은 복사를 해야 하는데 이때는 ICloneable 인터페이스를 상속받아 Clone이라는 

메서드를 구현해야 한다.


Object Clone() 

인수는 취하지 않으며 자신과 똑같은 타입의 객체를 만들어 리턴한다. 임의의 타입에 대해서도 

사본을 리턴할 수 있어야 하므로 리턴 타입은 object이다. 

다음 예제는 Clone 메서드를 구현해서 깊은 복사를 한다.

class Basic : ICloneable
{
public int data;
      public Basic(int val)
      {
          data = val;
      }
      public object Clone()
      {
          return new Basic(data);
      }
}
 
Basic A = new Basic(1234);
Basic B = (Basic)A.Clone();
B.data = 4123;
Console.WriteLine("A = {0}, B = {1}", A.data, B.data);

Clone에서 자신의 값과 동일한 객체를 생성해서 리턴 함으로써 완전한 사본을 만든다. 

B를 A의 사본으로 만들고 싶을 때는 A의 Clone 메서드를 호출하면 된다. 이때 Clone은 

object를 리턴하므로 반드시 원하는 타입으로 캐스팅해야 한다. 

Clone에 의해 완전히 새로운 사본이 만들어지므로 B를 어떻게 수정하더라도 원본에는 

영향을 미치지 않는다

 

'프로그램 > C#' 카테고리의 다른 글

C# 윈도우7 관리자 권한 얻기  (0) 2013.03.25
C# 리스트뷰 체크된 아이템 얻기  (0) 2013.03.25
크로스 스레드 해결법  (0) 2013.03.19
C# 화면 캡쳐  (0) 2013.03.12
C# MDI 폼안에 폼 띵우기  (0) 2013.03.12
프로그램/C# 2013. 3. 25. 22:03

C# 윈도우7 관리자 권한 얻기

출처: http://blog.naver.com/dpdlrnsdla/140146744441

 

특정위치의 디렉토리에 쓰기등의 작업을 할때 관리자권한이 필요한 경우가 있는데

 

위 링크에 가면 해결방법이 있음.

 

app.menifest 파일을 수정

 

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

 

위와 비슷한 문구를 위로 대체하면 실행할때 관리자권한 승인여부를 물어보게됨.

 

감이 안온다면 위 링크 이동후 그림 참조

 

'프로그램 > C#' 카테고리의 다른 글

C# 깊은복사  (0) 2013.03.25
C# 리스트뷰 체크된 아이템 얻기  (0) 2013.03.25
크로스 스레드 해결법  (0) 2013.03.19
C# 화면 캡쳐  (0) 2013.03.12
C# MDI 폼안에 폼 띵우기  (0) 2013.03.12
프로그램/C# 2013. 3. 25. 21:59

C# 리스트뷰 체크된 아이템 얻기

출처:http://ksh6438.blog.me/20163188658

위 출처와 여기 작성자 동일

 

ListView.CheckedListViewItemCollection lstv_Checkitem = Lstv_Search_History.CheckedItems;
 
//체크된 아이템 검색
foreach (ListViewItem item in lstv_Checkitem)
{
    //ex) 삭제
    Lstv_Search_History.Items.Remove(item);
}

 

'프로그램 > C#' 카테고리의 다른 글

C# 깊은복사  (0) 2013.03.25
C# 윈도우7 관리자 권한 얻기  (0) 2013.03.25
크로스 스레드 해결법  (0) 2013.03.19
C# 화면 캡쳐  (0) 2013.03.12
C# MDI 폼안에 폼 띵우기  (0) 2013.03.12