C#과 Java언어 비교(2) - Indexers, Delegates

C# and JAVA 2007. 5. 29. 10:30

http://genamics.com/developer/csharp_comparative_part3.htm


3.
인덱서(Indexers)

C# 프로퍼티에서 했던 것 처럼 각각의 요소를 get 그리고/혹은 set 메소드를 통해 외부로 노출하는 것을 제외하고 객체를 배열처럼 다룰 있도록 해주는 인덱서(indexers) 제공한다.

public class Skyscraper
{
Story[] stories;
public Story this [int index] {
get {
return stories [index];
}
set {
if (value != null) {
stories [index] = value;
}
}
}
...
}
Skyscraper empireState = new Skyscraper (...);
empireState [102] = new Story ("The Top One", ...);


4.
대리자(Delegates)

대리자는 타입에 안전한(type-safe) 객체지향 함수 포인터로 생각할 있는데, 개의 메소드가 아니라 여러 개의 메소드를 가질(hold) 있는 것을 말한다. 대리자는 C++에서 함수 포인터를, Java에서는 인터페이스를 이용하여 해결할 있는 문제를 다룬다. 대리자는 형식에 안전하며, 그리고 여러 메소드를 가질 있으므로 함수 포인터를 보다 좋게 만든다. 대리자는 내부 클래스 어댑터(inner-class adapter) 여러 메소드 호출을 처리하는 별도의 코드 없이도 메소드에 대한 호출을 있도록 해줌으로써 인터페이스적인 접근법을 보다 좋게 한다. 대리자의 가장 중요한 쓰임은 이벤트 처리인데, 이는 다음 섹션(어떻게 대리자를 이용하는지에 대한 예제를 보여줄 것이다)에서 다룰 것이다.

// 오전에 급.. List로 작성한 코드가 있었는데... 아무리 찾아봐도 Java에서 흔히 이용하던 GetXXX류의 메소드가 없어서 황당했었는데, 결국 인덱서로 접근하는 것이었어!!! -_-;;

: