전체 글
-
델리게이트, 이벤트 - 1@ 16. 1 ~ 17. 1/C# 2016. 11. 18. 05:05
델리게이트(Delegate)는 사전적 의미로 "대리자, 대표“ 등으로 해석되는데, C/C++에서의 함수 포인터와 비슷한 개념으로 생각하면된다.물론, 그 이상의 기능을 한다. 일반적으로 콜백(Call Back) 또는 발생된 이벤트에 대한 처리를 위한 이벤트 핸들러에 사용된다.콜백(Call Back)은 호출 될 함수를 알려주어서, 다른 프로그램 혹은 다른 모듈에서 함수를 호출하게 하는 방법이다. 일반적으로 운영체제가 호울할 애플리케이션의 메소드를 지정해서 특정 이벤트가 발생했을 때 호출되도록 지정할 수 있는데, 이런 메소드를 콜백 메소드라고 한다. 델리게이트의 선언이다. 이것은 함수의 선언과 비슷한 형식으로 되어있다.이것은 일종의 함수 타입의 선언이라고 보면 된다. 즉, public 권한을 갖으며, 리턴형은..
-
object 란? boxing unboxing!@ 16. 1 ~ 17. 1/C# 2016. 11. 18. 03:21
object는 System.Object의 별칭으로 C#의 모든 클래스의 최상위 부모 클래스입니다. (사실 C#의 5가지 형식(클래스, 구조체, 열거형, 델리게이트, 인터페이스 ) 중 인터페이스를 제외한 모든 형식은 System.Object를 최상위 공통 클래스로부터 파생됩니다.)모든 클래스는 System.Object 공통 클래스로부터 파생됩니다. 다음은 System.Object의 기본 메소드입니다. 4개의 가상 메소드와 2개의 일반 메소드, 2개의 정적 메소드 이렇게 총 8개의 메소드를 제공합니다.namespace System{public class Object{public virtual bool Equals(object obj);public virtual int GetHashCode();public v..
-
참조형식과 값형식 차이, 함수 매개변수(in, out, ref)@ 16. 1 ~ 17. 1/C# 2016. 11. 18. 03:05
첫째, 참조 기반의 형식(class, interface, delegate)둘째, 값 기반의 형식 (struct, enum) 클래스는 인자 없는 기본 생성자를 만들 수 있음. 구조체는 기본 생성자를 만들 수 없음.(예약됨) 둘다 생성시에CPoint cpt = new CPoint();cpt.Print(); SPoint spt = new SPoint();spt.Print(); 이렇게 가능그러나..이건 안됨.. CPoint cpt; // 객체가 없으므로 말도 않됨!cpt.x = 1; // 객체가 없는데 헐!cpt.y = 1; // 객체가 없는데 헐!cpt.Print();// 객체가 없는데 헐! SPoint spt; // 변수 선언이 곧 객체 생성이므로 당근 가능!!spt.x = 5; // 굿!spt.y = 5;..
-
getter setter@ 16. 1 ~ 17. 1/C# 2016. 11. 18. 02:49
위의 코드를 보시면, Field의 값을 얻어오거나 수정할때 GetField, SetField 메소드를 이용하죠? 그런데 C# 에서는 프로퍼티라는 기능을 제공하여 상당히 간단히 구현할 수 있습니다. 프로퍼티에는 get 속성 접근자와, set 접근자가 있습니다. 아래는 프로퍼티 기본 선언 형식입니다.12345678910111213141516 class 클래스명 { 데이터타입 필드명; 접근한정자 데이터타입 프로퍼티명 { get { return 필드명; } set { 필드명 = value; } } }... 여기서 보이는 get 속성 접근자는 위에서 구현한 GetField 메소드를 대체합니다. 즉, 속성 값을 반환하는데 사용되며, set 접근자는 SetField 메소드를 대체, 새 값을 할당하는데 사용합니다. 살..
-
C# 자료구조 정리..@ 16. 1 ~ 17. 1/자료구조 2016. 11. 18. 00:56
z균형 이진 탐색트리VL트리는 Adelson-Velskii와 Landis에 의해 1962년에 제안된 트리로서 각 노드에서 왼쪽 서브 트리의 높이와 오른쪽 서브 트리의 높이 차이가 1이하인 이진 탐색 트리를 말한다. AVL 트리는 트리가 비균형 상태로 되면 스스로 노드들을 재배치하여 균형 상태로 만든다. 따라서 AVL트리는 균형 트리가 항상 보장되기 때문에 탐색시간이 O(log₂n)시간안에 끝나게 된다. 또한 삽입과 삭제 연산도 O(log₂n)시간안에 할 수 있다. AVL트리에서 균형인수는 매우 중요하다. 균형인수란 왼쪽서브트리의 높이 - 오른쪽 서브트리의 높이로 정의된다. 모든 노드의 균형인수가 ±1 이하이면 AVL 트리이다. (그림 출처 : SafariBooks ) * 균형 인수여기서 노드 아래의 숫자..
-
C# 자료구조 정리좀..@ 16. 1 ~ 17. 1/자료구조 2016. 11. 17. 00:40
배열은 고정된 크기의 연속된 배열요소들의 집합이므로 배열을 초기화 할 때 총 배열 요소의 수를 미리 지정해야 한다. 하지만 경우에 따라 배열요소가 몇 개나 필요한 지 미리 알 수 없는 경우가 있으며, 중간에 필요에 따라 배열을 확장해야 하는 경우도 있다. .NET에는 이러한 동적 배열을 지원하는 클래스로 ArrayList와 List이 있다. 이들 동적 배열 클래스들은 배열 확장이 필요한 경우, 내부적으로 배열 크기가 2배인 새로운 배열을 생성하고 모든 기존 배열 요소들을 새로운 배열에 복사한 후 기존 배열을 해제한다. 동적 배열의 Time Complexity는 배열과 같이 인덱스를 통할 경우 O(1), 값으로 검색할 경우 O(n)을 갖는다. ArrayList 클래스 ArrayList는 모든 배열 요소가 ..
-
C# 시작2@ 16. 1 ~ 17. 1/C# 2016. 11. 16. 22:03
1. 컬렉션(Collection) 우리가 이번 강좌에서 배우게될 '컬렉션(Collection)'이 뭐하는 녀석인지 간단히 알아봅시다. 컬렉션은 데이터의 검색과 저장을 위해 특화된 것이라고 말할 수 있습니다. 자료구조(Data Structure) 라고도 말할 수 있습니다. 컬렉션에서는 배열 리스트(Array List), 해시 테이블(Hash table), 큐(Queue), 스택(Stack) 등을 지원합니다. 하나하나 다 설명하다보면 강좌가 끝도 없이 길어질 것 같아, 간략하게 설명하겠습니다. 1. 델리게이트!http://www.csharpstudy.com/CSharp/CSharp-delegate-concept.aspx 오늘은 델리게이트(Delegate)에 대해서 알아보려고 합니다. 델리게이트는 한마디로 말..
-
C# 시작@ 16. 1 ~ 17. 1/C# 2016. 11. 16. 21:26
foreach(자료형 변수명 in 순차접근되는 배열?) 포인터는 없으므로, ref int a 이렇게 ref붙이면 참조형식으로 변경됨..그런데 매개변수로 넘길땐느 ref를 붙여서 넘겨야 한다.static void Add(ref int a);함수일때 사용하면int a = 40;Add(ref a);out 키워드는 ref 키워드와 비슷하게 인수를 참조로 전달할때 사용됩니다. 그러나 차이점이 존재합니다. out 키워드를 사용하면 변수를 전달하기전 초기화해야하는 ref 키워드와는 달리 초기화 하지 않고도 전달이 가능합니다. 아래는 out 키워드의 사용 예제입니다위에 ref 랑 똑같음..ref와 out의 차이는 ref는 초기화를 해야하는데 out은 안해도 된다. 우리가 만약, 길이에 제한받지 않고 수를 넘겨주어 그 ..