.NET Framework 3.0 에 대한 개념정리를 하겠다. 혹, MCTS 를 공부하시는 분들을
위해 도움이 될지는 모르겠네요.
CLR
CLR (Common Language Runtime): .NET Framework 의 모든 기초(Foundation)이다. CLR 은 .NET 의 언어인 VB .NET, C#, Jscript 등의 토대를 이루고 있다.
CLR 위에 만들어진 소프트웨어는 Managed Code 라 불리운다. 물론, Unmanaged Code 도 작성할 수 있으나, 대다수의 .NET 어플리케이션은 Managed Code 이다. 이러한 코드를 작성하기 위해서는 위에 언급한 여러 Language 를 사용할 수 있다. 이러한 Language 에는 공통적으로 사용할 수 있는 Type 들이 있는데 그러한 것을 가능케 해주는 것이 CTS (Common Type System)이다. CTS 역시 CLR 안에 속해 있다. 하지만 각 언어에서 다르게 구현은 될 수 있다.
CTS
모든 Type 은 Object 로부터 파생 되며, 두가지 Type 들로 이루어 진다. Reference type 과 Value type.
Value 타입은 매우 단순한 경향(?)이 있다. 이 타입에는 Byte, Char, Signed & Unsigned Integer, Single & Double Floating Point, Decimal, Boolean 등이 있다.
Reference 타입은 이에 비해 복잡하다. Class, Interface, Array, String 이 그 타입에 속한다.
메모리의 사용을 보자면 값들은 Stack 이나 Heap 에 저장될 수 있다. 일반적으로
method 가 불리우거나 method 안에서 값들이 생성될 때에 Stack 에 저장된다고 볼 수 있다. 이러한 값(Stack 에 놓여진 값들)은 method 가 반환될 때에 자동적으로 없어진다. 그러나, Heap 에 할당되어진 값들은 method 가 끝난다 하더라도 없어지지 않는다. 그렇기 때문에 .NET 에는 Garbage Collection 이라는 프로세스를 통해 자동적으로 Unmanaged Resource 들을 없애준다(C# 에는 using 이라는 키워드를 통해 생성된 값들을 Garbage Collecting 할 수 있게 해준다).
두 가지 타입이 다른 이유는 value 타입의 실질적인 값은 Stack 에 저장되는 반면 reference 타입의 실질적인 값은 Heap 에 저장되며 Stack 에는 그 실질적인 값을 참조하는 포인터값이 저장된 다는 것이다.
이러한 타입들에 대해 조금 더 자세히 알아보자
Value Type (모든 value 타입은 ValueType 로부터 파생된다 - value 타입은 CLR 세계에서 Sealed 라고 불리우기도 한다)
- Byte
- Char
- Int16, Int32, Int64
- UInt16, UInt32, UInt64
- Single and Double
- Decimal
- Enum
- Boolean
Reference Type
- Methods: 어떠한 operation 이 있는 실행가능한 코드
- Fields: 어떤 타입에 대한 값
- Events: 다른 타입들 사이의 소통수단
- Properties
- Nested types: 타입 안의 타입 (Nested Class)
- Class
- Interface: 인터페이스는 methods, properties, events 들을 포함한다. 클래스와는 다르게 다중 상속이 가능하다.
- Array: 같은 타입 안에서의 여러 값들을 존재케 함
- Delegate: Method 에 대한 포인터
2편에서 계속...
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5