2010년 10월 27일 수요일

C# 공부한거 정리 #1

C/C++ 호환성을 위해 사용

pointer - unsafe, fixed

struct - stack에 memory allocation

 

Garbage Collector - heap 관리

 

Type

- Value type(Built-in type)

- Reference Type : Class Object

- readonly 추가 (const 비슷함)

 

전달법

- Call by Value (Value Copy)

- Call by Reference (ref, out)

 

Class 추가 기능

Access Identifer 추가

- internal

- protected internal

Property 추가 (set, get) - set 인자 value

sealed - 상속금지

Overriding-

-- new public void Method() 활용법

-- base : 상위접근

Polymorphism

-- abstract // overlide

-- Interface

-- Upcasting (객체의 묵시적 캐스팅)

 

Casting

-- Object 형? - 모든 object가 가지는 최상위 class

-- Boxing : value -> ref 변환 // UnBoxing

 

Delegate

-- 활용? 함수포인터 // 쓰레드/이벤트 제어 --> 캡슐화

 

계약적 다형성 (Contract)

-- Interface활용 ( 빌더 패턴과 유사? )

 

배열 생성법

int[] name = new int [10];

배열 선언후에는 하나씩 할당하는 방법이외에 다른 방법은 없다.

int[] ref = ref2; (참조값이 할당됨 유의)

 

-- value array

-- object array - 메모리 할당 필요

 

다차원 배열

int[,] myarray = new int[4,3];

 

가변 배열 (Jagged Array)

int[][] jagarray = new int[3][]; // matrix 표현 불가능

jagarray[0] = new int[10]; 하부열 할당필요

 

배열의 property

Length, Rank(차원의 수)

배열 지원 함수 -> System.Array [ICloneable, IList, ICollection, IEnumerable]

복사 방법 Copy(), Clone() [ 일부, 전체 복사 ]

 

foreach

- Array, Collection에서 활용 ( foreach(int i in array)

- 읽기전용 / 검색전용 제어문 ( Iterator )

 

Indexer

public object this[int index]{ get{} set{} }

 

문자열

string - 수정 불가 -> 대체안 : StringBuilder - 문자열 조작의 cost time을 기하급수적으로 줄여준다.

 

 

 

C/C++ 차이점

묵시적 캐스팅 - 무조건 에러

if에 조건식이 없거나 true, false 결과값이 없다 - 무조건 에러

다중 상속 불가 - interface를 활용한 샛길

함수포인터 활용 - delegate

 

C++의 STL? -> System.Collections

C++의 RTTI? -> System.Reflaction

C++의 Console IO? -> System.Console

 

 

댓글 없음:

댓글 쓰기