C#에서 배열 쓸 때 팁
| C#, 빌게만세, 프로그래밍 | 2008.06.29 18:54 |
명시적 인터페이스 구현에 대한 글을 읽고 떠올라서 한 번 해봤는데 되더라.
C#에서 배열을 쓸 때 List에선 제공되는 기능들이 없어서 갑갑할 때가 있다.
Add, Remove 같은 거야 배열 특성상 당연히 안 되는 거지만 될 것 같은 애들도 없으니 문제.
근데 사실 배열은 IList 인터페이스를 구현하고 있어서 캐스팅하면 쓸 수 있다?
이때까진 인터페이스 구현하면 무조건 퍼블릭으로 노출해야 하는 줄 알았는데
명시적 구현을 해서 프라이빗으로 구현한 다음시 그 인터페이스를 통해서만 사용할 수 있도록 하는 방법이 있더라.
즉, 배열은 사실 IList를 구현하고 있음에도 불구하고 명시적 구현이라
겉으론 안 하고 있는 척 하고 있는 것이다.
이런 츤데레 배열 같으닐.
그래서 이런 짓이 가능하다.
IList arrayList = array;
array[0] = 5;
array[1] = 5;
array[2] = 6;
array[3] = 6;
Console.WriteLine( arrayList.Contains( 5 ) );
Console.WriteLine( arrayList.IndexOf( 6 ) );
arrayList.Clear();
Console.WriteLine( array[0] );
멤버 메소드 다 테스트 해봤는데 저 메소드 3개만 가능하다.
다른 IList의 메소드들을 호출하면 익셉션 뻥~!
배열에 대고 포함 여부 알아보기, 인덱스 찾기, 초기화 한다고 포문 돌리는 일이
자주 있는데 그런 코드가 많아지면 저렇게 IList 인터페이스로 빼서 메소드를 써주면
좀 더 깔끔한 경우가 있을 듯.
