기술/C#(2)
-
박싱과 언박싱 struct와 class의 차이점에 대해서
박싱과 언박싱 C언어의 포인터 개념, 메모리 할당등 기본기에 대해 충분히 알고 있음에도 면접을 볼 때, C#의 어떤 개념에 대해서 물어보면 막히거나 할 때가 종종있어서 당황스럽다. 깊은 복사와 옅은 복사의 개념에 대해서도 알고 있긴 한데 막상 설명해 보라고 하면 어버버 할 때가 있다. 달리고 있는 사람한테 "걷는게 무엇이죠?"라는 질문을 받는거 같은 상황.. 아무튼 박싱과 언박싱 자주 사용하지 않는다. CODE COMPLETE라는 책에서 가장 빠른 코드는 '실행되지 않는 코드이다'라는 글을 읽은적이 있는데 그렇다고 생각한다. 프로그래머는 코드를 작성할 때 어느정도 성능을 생각하며 작성해야 한다. CPU나 GPU가 어느정도 계산을 할지 어느정도는 예상을 하고 최소 사양 권장 사양을 생각해야한다. 박싱과 언..
2021.08.06 -
C# ICloneable 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy)
Undo 기능을 구현할 때, 기존 자료구조를 복사해서 들고 있어야 한다. 기존 자료구조는 Dictionary로 구현이 돼있는데 이를 Deep Copy하는 방법을 알아보자. Dictionay listNode = new Dictionary(); 스택 자료구조로 구현해서 위에서 빼도 되는데 최대 N개만 들고 있기를 구현하려고 List 자료구조 사용 List stackNode = new List(); 생성자를 사용해서 listNode를 복사하려고 했으나 이렇게 하면 참조값이 복사가 된다. 그러므로 기존 값이 변경됨에 따라 새로 생성한 자료들도 값이 변경되게 된다. m_listUndo.Add( new Dictionary(listNode) ); 그래서 ICloneable을 사용하는데 값 복사가 필요한 Node 클래..
2021.06.16