본문 바로가기

Architecture for Software/.NET

(2)
C#의 Value Type과 Reference Type 여러 다른 언어들과 마찬가지로 C#에서도 효과적인 메모리 관리를 위하여 고유 데이터 타입을 정의해 두고 있습니다. 예를 들어 정수, 문자열, 부동 소수점, Boolean 등에 대한 타입들이 바로 그런 예입니다. 여기서 특이한 점은 C#에서는 데이터 타입을 "값 기반(Value based)"과 "참조 기반(Reference based)"로 구분해두고 있습니다. 중요한 점은 Value based Type의 경우 스택(Stack)에 값들을 할당하며, Reference Based Type의 경우 힙(Heap)에 값들을 할당한다는 점입니다. 만약 다음과 같은 코드가 존재한다면 Value Type일까요? 아니면 Reference Type일까요? // Assign int a = 2; int b = 3; // Swap..
MSIL 역어셈블러(ildasm.exe)로 Boxing 확인하기 .NET에 MSIL 역어셈블러(ildasm.exe)가 있어서 MSIL 코드들을 확인할 수 있습니다. ILDasm.exe는 Intermediate Language Disassembler Utility입니다. MSIL 역어셈블러는 .NET Framework에서만 실행될 수 있는 어셈블리이며, 어셈블리를 역으로 해석해주는 역어셈블러 프로그램이다. 간단하게 C#으로 작성된 코드의 내역중 Boxing이 수행된 내역을 MSIL을 통하여 확인해보겠습니다. 우선 다음과 같은 코드를 작성합니다. 간단하게 버튼을 하나 만들고 버튼에서 리스트에 1 ~ 100까지 출력하는 코드입니다. private void button3_Click(object sender, EventArgs e) { // Boxing이 일어나는 코드이다. ..