본문 바로가기

C#

(12)
[C#] Delegate ◈ 대리자(Delegate)란?: 함수를 보다 효율적으로 사용하기 위해서 특정 함수 자체를 캡슐화하는 기능을 가지고 있다. ◈ 1단계 Delegate할 함수를 정한다.: Delegate할 함수를 정한다는 것은 어떠한 함수가 대리자를 통해서 호출될 것인지의 문제이이다.함수의 형태가 다르면 Delegate를 다르게 만들어주어야 한다. ◈ 2단계 함수에 맞는 Delegate 선언하기: Delegate를 선언하려면 함수의 시그너쳐(Signature)에 정확하게 일치시켜야 한다. 아래와 같이 Delegate와 함수의 리턴타입과 매개변수를 정확하게 일치시켜서 Delegate를 선언해야 한다. delegate void SimpleDelegate1(); // Delegate 선언 1 = void F1()delegate..
[C#] Boxing / UnBoxing / as ▣ 언박싱(UnBoxing)-. UnBoxing은 Boxing된 참조차입을 다시 값타입으로 변환하는 것을 말한다. ▣ UnBoxing의 순서-. 해당 객체가 지정한 값타입을 Boxing한 값인지 확인-. Boxing된 객체라면 객체의 값을 값타입 변수에 복사한다.-. Boxing한 메모리와 UnBoxing한 메모리 두 개가 존재한다. ▣ UnBoxing의 예-. int p = 123;-. object o = p; // Boxing 묵시적으로 이루어진다.-. int j = (int)o; // UnBoxing 명시적으로 캐스팅해주어야 함.-. Console.WriteLine("j = " + j);-. Console.WriteLine("p = " + p);-. Console.WriteLine("o = " + ..
[C#] 서로 다른 3가지 Timer ◈ 정의 Timer는 C++부터 쭈욱 많이 사용되는 스레드 종류 중에 하나C#에서는 Timer 클래스가 3개가 존재합니다. 물론 각각의 Timer는 속성이 다릅니다. ◈ 설명먼저 Timer의 특징은 Thread와 다른게 선언할 때 반복의 간격을 정하게 되겠습니다. 아무래도 Thread.Sleep는 인터럽트적으로 강제로 프로세스를 멈추게 하는 성향이 있기 때문에 시스템에 무리가 가게 되어있습니다. 그러나 Timer는 Callback 개념으로 지정된 시간 후에 Callback을 하는 개념이니 아무래도 부하가 적게 걸립니다.그리고 Timer는 세개로 나누어져 있습니다. Timer는 ThreadPool과 비슷한 개념으로 부모 메소드가 차단되면 Timer도 자동적으로 Callback의 주체가 없어지니 소멸되게 되..
[C#] 마샬링이란(marshalling) ◈ 정의 프로그래밍에서 마샬링은 RPC, RMI 등에서 클라이언트가 원격지(서로 다른 프로세스)의 메서드를 호출 시서버에 넘겨지는 인자, 원격지 함수의 리턴 값들을 프로그래밍 인터페이스에 맞도록 그 데이터를 조직화하고,미리 정해진 다른 형식으로 변환하는 과정 ◈ 설명1) XML로 마샬링, byte 스트림으로 마샬링 등 데이터 교환시 어떠한 정해진 표준에 맞게 해당 데이터를 가공하는 것을 마샬링, 언마샬링 이라고 한다. 2) 클라이언트에서 마샬링된 데이터를 서버에 전달하게 되면, 서버에서는 그 데이터를 언마샬링하여 사용함으로써 원격지(다른 프로세스)간의데이터 사용이 가능하게 된다. 3) 동일 어플리케이션 도메인에 존재하는 객체의 메서드를 호출할 때의 매개변수나 결과값을 전달할때에는 스택을 통하여 전달된다...