C#과 Java언어 비교(2) - Indexers, Delegates
C# and JAVA 2007. 5. 29. 10:30http://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류의 메소드가 없어서 황당했었는데, 결국 인덱서로 접근하는 것이었어!!! -_-;;