본문 바로가기

c#

박준호님의 C# 강좌 - Delegate Delegate 한 객체의 Method에서 자기를 생성한 객체의 함수를 호출해야 할 필요가 있을 때 사용 한 시스템에 있는 객체가 다른 객체를 생성해서 그것을 사용하고, 또 그 생성된 객체가 자기를 생성한 객체의 함수를 호출하는 형태의 '양방향 호출' Windows API의 Callback function(콜백 함수)를 생성하기 위한 function point 기능을 더 안정적으로 확장 event와 함께 사용되어 .NET Framework에서 event 처리에 많이 사용 일반적인 method와 달리 compile 시에는 매개변수로 전달되는 method가 무엇인지 알지 못한다. Delegate의 정의 현재 정의 하는 delegate가 어떤 종류의 method를 나타내는지 compiler에게 알려주는 것을 .. 더보기
박준호님의 C# 강좌 - Collection / ArrayList / HashTable Collection 배열의 경우 인덱스를 사용하여 각 항목(element)에 접근하게 되는데, Collection은 인덱스를 사용하지 않고 모든 element에 순차적으로 접근할 수 있는 방법을 제공한다. 각 element에 순차적으로 접근할 수 있도록 허용하는 객체의 집합니다. 객체가 열거자(enumerator)라고 불리는 객체의 참조를 제공하면 collection이라 한다. 열거자는 Collection 내의 항목을 순차적으로 엑세스 할 수 있다. foreach를 통해 객체의 내에 순차적으로 접근 할 수 있도록 기능을 제공한다. Collection의 동작 Collection이 foreach와 함께 사용될 때 foreach는 collectionm의 Ienumrable interface로 부터 GetEnu.. 더보기
박준호님의 C# 강좌 - Namespace Namespace class와 각종 data type들을 그 연관성에 따라 그룹화시키는 논리적인 개념 Namespace를 중첩시켜 계층적인 data type을 구성 class의 이름 충돌을 해결하기 위한 용도로 사용 Namespace를 사용할 경우 이름이 길어지게 되는데, 이것을 해결하기 위해 Namespace Alias를 통해 Namespace의 별칭을 지정할 수 있다. namespace에 포함될 수 있는 것 namespace, class, interface, struct, enum, delegate Namespace의 범위 class는 그 class가 참조될 수 있는 범위를 가지고 있다. namespace가 지정되지 않으면 같은 namespace에서 처리 using System; class Utili.. 더보기
[C# 강좌] C# 프로그래밍 #10- 구조체 3.3 구조체 3.3.1 구조체(structure) 소개 구조체를 사용하는 목적은 자료구조를 표현하기 위해서 있다. 기본적인 형태와 특징은 클래스와 비슷하다. 클래스와 마찬가지로 인터페이스에 대한 상속을 지원하며 메서드를 가질 수 있는 반면, 자료의 타입이 값 형태(Value Type)으로 지정된다. 이는 데이터에 대한 접근이 stack에 바로 접근해서 데이터를 가져올 수 있는 반면, 참조 형식(Reference Type)의 경우 stack에 접근해서 클래스의 Heap상의 위치에 대한 참조를 가져와야만 한다. 따라서, 간단한 자료 구조에 대한 표현이나 데이터형이 필요할 경우 구조체로 만드는 것이 성능면에서 유리하다는 것을 알 수 있다. 구조체의 기본 형식은 다음과 같다. /속성/ /엑세스 한정자/ str.. 더보기
[C# 강좌] C# 프로그래밍 #09- 상속 3.2 상속 3.2.1 상속이란? 상속이란 클래스를 만들 때, 이전에 만들어진 클래스의 기능을 가져와 클래스를 구성하거나 사용하기 위해 사용되는 객체지향프로그래밍 기법의 하나이다. C#에서 상속은 C++와는 약간의 차이가 있는데, 그 중 하나는 클래스 다중 상속을 지원하지 않는 다는 것이다. “승용차”, “SUV차량” 2개의 자동차에 대한 프로그램을 만든다고 가정하자. 2가지 클래스의 공통점은 자동차라는 것이다. 또한, 기능적인 면에서 거의 일치하며, 다만 약간씩의 차이가 있을 뿐이다. 이것을 어떻게 구현할 것인가? 유사한 기능들을 “승용차”에 구현하고 또 “SUV차량”에 구현하는 것은 구조적으로 좋지 못하다. 1) 기능을 업데이트 할 때 2가지 차량에 대한 모든 기능을 수정해야 한다. 2) 차종이 많아.. 더보기
[C# 강좌] C# 프로그래밍 #08- 클래스 3. 객체 지행 프로그래밍(Object Oriented Programming) 3.1 클래스 3.1.1 C# 프로그램 구조 C# 프로그램은 클래스를 기본 요소로 모든 수행코드가 클래스 내에서 이루어진다. 다음 소스를 보자. 1 2 3 4 5 6 class Program { static void Main(string[] args) { } } 실제 using 구문과 namespace에 대한 정의 없이 위와 같이만 코드를 쳐도 프로그램이 정상적으로 컴파일 됨을 알 수 있다. 이는 이것만으로도 완벽한 프로그램이 된다는 것을 의미한다. 실제 C#의 응용프로그램은 위와 같이 구성된다. 1번째 라인과 같이 클래스가 하나 만들어지고, 3번째 라인과 같이 실제 프로그램의 진입점인 Main 메서드를 구현하게 된다. 다시 .. 더보기
[C# 강좌] C# 프로그래밍 #07 - 흐름제어 2.5 흐름 제어일반적으로 프로그램은 작성된 코드 순서대로 실행이 된다. 이 실행 순서를 바꾸기 위해 사용되는 방법을 여기서는 설명하도록 하겠다.  2.5.1 조건문 if조건문은 진리값에 따라 코드를 실행해 줄지 말지를 결정해주기 위한 문장이다.  1) 단순 조건문단순 if 문의 경우 다음과 같이 이용될 수 있다.if (상태)    수행 코드 수행 코드가 여러 줄로 나타날 경우 중괄호를 이용해 묶어 줄 수도 있다.if (상태) {    수행 코드1    수행 코드 2} 위 문장은 단순 조건문의 기본형을 보여주고 있다. 참인 경우만을 가지고 조건을 판단할 때는 위와 같이 이용되고, 거짓인 경우에 다른 코드를 실행해주어야 한다면 다시 else 를 이용하.. 더보기
[C# 강좌] C# 프로그래밍 #06 - 변수와 상수 2.4 변수와 상수2.4.1 변수 1) 변수의 선언변수는 변수의 데이터 타입과 변수의 이름과 값으로 이루어진다. 변수의 선언이라 함은 미리 어떤 형의 변수를 이용하겠다고 컴파일러에게 알려주기 위해 이용되는 일련의 행위라고 보면 된다. 그럼, 왜 변수를 사용하는가?고급 언어들 중 변수의 선언을 굳이 필요로 하지 않는 언어도 있지만, 이는 언어에 따른 차이일 뿐, 대부분의 프로그래밍 언어는 변수의 선언를 사용자에게 요구한다. 변수를 선언하지 않을 경우, 컴파일러는 다양한 형들에 대해 값이 쓰인 용도를 파악해가며 변수의 형을 내부적으로 재정의 해야한다. 이는 프로그램의 성능에 좋지 않은 영향을 미치게 된다. 다른 이유로 정의되지 않은 형은 결과에 어떤 영향을 줄지 모르며 실행시간에 런타임 에러를 일으.. 더보기