C# Programming Guide - Types

Similar documents
1

PowerPoint 프레젠테이션

07 자바의 다양한 클래스.key

01-OOPConcepts(2).PDF

PowerPoint 프레젠테이션

초보자를 위한 C# 21일 완성

thesis

PowerPoint 프레젠테이션

JVM 메모리구조

chap10.PDF

Runtime Data Areas 엑셈컨설팅본부 /APM 팀임대호 Runtime Data Area 구조 Runtime Data Area 는 JVM 이프로그램을수행하기위해할당받는메모리영역이라고할수있다. 실제 WAS 성능문제에직면했을때, 대부분의문제점은 Runtime Da

Interstage5 SOAP서비스 설정 가이드

CTS사보-2월

Microsoft PowerPoint - a10.ppt [호환 모드]

슬라이드 1

Orcad Capture 9.x

PowerPoint 프레젠테이션

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

02 C h a p t e r Java

강의10

09-interface.key

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

KYO_SCCD.PDF

chap 5: Trees

PCServerMgmt7

DataBinding

No Slide Title

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

11 템플릿적용 - Java Program Performance Tuning (김명호기술이사)

05-class.key

PowerPoint Presentation

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....


2007_2_project4

MS-SQL SERVER 대비 기능

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

Secure Programming Lecture1 : Introduction

Modern Javascript

untitled

어댑터뷰

DocsPin_Korean.pages

T100MD+

Observational Determinism for Concurrent Program Security

자바 프로그래밍

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

BACK TO THE BASIC C++ 버그 헌팅: 버그를 예방하는 11가지 코딩 습관

JAVA PROGRAMMING 실습 08.다형성

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

untitled

Design Issues

슬라이드 1

final_thesis

Chap7.PDF

Frama-C/JESSIS 사용법 소개

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

10주차.key

ch09

SIGPLwinterschool2012

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

교육2 ? 그림

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

MPLAB C18 C

Microsoft PowerPoint - Chapter_04.pptx

Microsoft Word - ExecutionStack

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

thesis

The_IDA_Pro_Book

Microsoft PowerPoint - lecture2.ppt

1217 WebTrafMon II

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

초보자를 위한 자바 2 21일 완성 - 최신개정판

Deok9_Exploit Technique

JMF3_심빈구.PDF

JUNIT 실습및발표

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

강의 개요

Microsoft Word - FunctionCall

Week5

PowerPoint 프레젠테이션

Interstage4 설치가이드

03-JAVA Syntax(2).PDF

슬라이드 1

5장.key

slide2

자바GUI실전프로그래밍2_장대원.PDF

유니티 변수-함수.key

Javascript.pages

12-file.key

Chap 6: Graphs

rmi_박준용_final.PDF

No Slide Title

부산, 글로벌과 로컬의 사이에서

UI TASK & KEY EVENT

PowerPoint 프레젠테이션

비긴쿡-자바 00앞부속

Microsoft PowerPoint - CSharp-10-예외처리

Transcription:

C# Programming Guide - Types 최도경 lifeisforu@wemade.com

이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx

Types, Variables, and Values C# 은 type 에민감한언어이다. 모든 variable( 변수 ) 와 constant( 상수 ) 는 type 을가진다. 모든 method 의 signature 는 input parameter 와 return value 를위한 type 을가진다. Class library 는내장 numeric type( 수치형 ) 뿐만아니라 file system, network connection, collection, array, date 등과같은복잡한논리구조를표현하는복잡한 type 들을가진다.

Type, Variables, and Values( cont ) Type 은다음과같은정보를포함하고있다. Variable 이요구하는 storage space. 최대, 최소값. Members( method, field, event 등 ). 상속한 base type. 실행시간에 variable 이할당된 memory 위치. 수행된 operation 의종류.

Built-in Types Integer, floating point value, boolean, text character, decimal value 등을표현하기위한 buit-in type( 내장형 ) 을제공한다.

Custom Types struct, class, interface, enum 을사용해자신만의 custom type 을만들수있다. Collection 을사용할수있다.

Common Type System 모든 type 은 System.Object 를 base class 로해서상속된다. 이러한통일된 type hierarchy 는 Common Type System( CTS ) 이라불린다. CTS 내의각 type 은 value type 이거나 reference type 일수있다. struct 와 enum keyword 를사용한것이 value type 이며, class key word 를사용한것이 reference type 이다. Reference type 과 value type 은서로다른 compile 규칙과 run-time 동작을가진다.

Common Type System( cont )

CTS - Value types System.ValueType 을상속한다. 이 System.ValueType 은 System.Object 를상속한다. ValueType 을상속한 type 들은 CLR 에서특별한동작을한다. 직접값을포함한다. 변수가선언된 context 에상관없이 memory 가 inline 으로할당된다. Heap 에할당되지않으며, garbage collection 의대상도아니다. struct 와 enum 은 value type 이다.

CTS - Value types( cont ) Built-in numeric type 들은 struct 이며, property 와 method 를가진다.

CTS - Value Types( cont )

CTS - Value Types( cont ) Value type 은 sealed 이다. 즉 System.Int32 를상속할수없고, class 나 struct 를상속하는 struct 를만들수없다는것을의미한다. 대신에 interface 를구현할수는있다. System.Object 형을취해야하는 method 에 value type 을넘기게되면 boxing 이일어난다 ( 나중에설명 ).

CTS - Reference Type class, delegate, interface 로정의된 type 은 reference type 이다. 실시간에 reference type 의변수를선언하면 new operator 를사용해명시적으로 object 를생성하거나다른 object 를할당하기전까지는 null 값을가진다. Reference type 의 object 는 managed heap 에생성되며, variable 은 object 의위치에대한참조를가진다.

CTS - Reference Type 같은 object 를참조한다면 hash code 가같다.

CTS - Reference Type Reference type 은 garbage collection 의대상이다. 모든 array 는 reference type 이다. 심지어그것의요소가 value type 이더라도 array 는 reference type 이다.

CTS - Literal Values Compiler 가 type 을결정함.

CTS - Generic Types 하나이상의 type parameter 를가지고선언된 type 을의미함. Type parameter 는실제 type 에대한 placeholder 의역할을함. 같은 class 를요소를 Object 로형변환하지않고도어떤 type 이든포함할수있는 container 로만들기위해서사용. 재사용성과확장성을높임. EX ) List< String > strings = new List< String >();

CTS - Implicit Local Variables var 라는 keyword 를사용. 실제 type 은 compiler 가결정해줌.

CTS - Anonymous Types 명시적으로 type 을정의하지않고도, 하나의 object 에 read-only property 들을넣을수있는방법을제공. Compiler 에의해서 type 이결정됨.

CTS - Nullable 일반적인 value type 은 null 일수가없다. 하지만값이없는상황을표현하고싶을때도있다.

CTS - Nullable( cont ) System.Nullable< T > 는 value type 을 null 로만들수있는가능성을제공한다. Int32? 처럼 "?" 를사용해 nullable 을표현한다.

Boxing & Unboxing Value type 으로선언된 variable 을 object type 으로만드는것이 boxing 이며, 이를다시 value type 으로만드는것이 unboxing 이다. Boxing 을하면 value type 으로선언된 variable 이 heap 으로옮겨지고, unboxing 을하면다시 local 로복사된다. Unboxing 을했을때는 boxing 하기전과같은 variable 이라할수없다.

Boxing & Unboxing( cont )

Boxing & Unboxing( cont ) C++ 과비교를해보면 CTS 의장점을느낄수있다. C++ 은 type 들이하나의 base class 를상속하는구조가아니기때문에, 모든 type 을받아들이는 container 나 parameter 를만들기위해서는 reinterpret_cast< void* > 를사용할수밖에없다. 하지만 reinterpret_cast< void* > 후에는 type 을검사하거나복구할방법이없다.

Conclusion 모든 type 은 System.Object 를상속하며, 이러한상속계층을 Common Type System 이라부른다. 이를통해모든 type 에대한형정보를획득할수있다. Type 은 value type 과 reference type 으로나뉘며, value type 은 local 에, reference type 은 heap 에생성된다. Value type 을 Object type 으로바꿔 heap 에복사하는것을 boxing 이라하고, 그반대를 unboxing 이라한다.