Microsoft MVP성태의 닷넷 이야기
ArrayList, IList에 대해 질문 있습니다. [링크 복사], [링크+제목 복사]
조회: 2988
글쓴 사람
한예지
홈페이지
첨부 파일
 

선생님 안녕하세요!

몇몇 코드가 아래와 같이 ArrayList를 IList로 업캐스팅하던데 혹시 장점이 있나요?

IList observers = new ArrayList();
observers.Add();

ArrayList가 IList를 구현했기 때문에 굳이 업캐스팅 해서 Add 함수를 사용할 이유가 없어서 보입니다...

만약 매개변수 타입을 IList로 하면 IList를 구현한 애들을 모두
받을 수 있어서 좋기는 하지만 위와 같이 개체 생성 시 ArrayList를 IList로 업캐스팅하면 혹시 어떤 장점이 있을까요?








[최초 등록일: ]
[최종 수정일: 6/18/2021]


비밀번호

댓글 작성자
 



2021-06-18 09시49분
단순히 코드 내에서 그렇게 하는 것은 딱히 의미가 없습니다. 그냥 개인 취향이라고 보시면 됩니다.

말씀하신 것처럼, 메서드의 인자 타입을 ArrayList보다는 IList로, 메서드의 반환 타입을 IList보다는 ArrayList로 정의하는 식은 의미가 있습니다. 이에 대해서는 다음의 글을 참고하세요.

https://www.sysnet.pe.kr/2/0/11513#ret_arg_type
정성태
2021-06-19 11시24분
[한예지] 쉬운 답변 정말 감사드립니다!!!
[guest]
2021-06-22 12시03분
[ryujh] 안녕하세요.
질문하신 분께서 마지막에 'IList를 구현한 애들을 모두 받을 수 있어서' 라고 말씀 하신 것과 비슷한 장점이 있는데

업무에 따라 ArrayList 만 필요한 것이 아닌 비슷한 List 도 필요할 수 있고 List에 공통된 기능이 Add,Remove 일겁니다.
Add,Remove 등 공통 기능이 IList 를 통해 구현했을 것입니다.

타입마다 함수를 만든다면 add,remove하는 코드가 함수마다 중복될 수도 있으니 IList 를 매개변수로 한다면 함수 개수가 줄어들 것입니다.

질문의 내용은 observers 를 다른 함수로 넘겨서 IList 인터페이스 통한 기능만 사용하기 위한 것으로 보면 되겠습니다.
[guest]

[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5912guest4/25/2023945[참고 - 초보용] Sqlite 디비는 double이 없고 Real이 대신합니다 [3]
5911guest4/24/2023336Form1.cs와 외부 class.cs와 통신 (static async method포함) [4]파일 다운로드1
5910guest4/24/2023209Async 메서드와 try~catch [1]
5909guest4/22/2023327Visual Studio 구매 시(1인 개발자) [4]
5908guest4/22/2023313텅빈 원그리기 [5]
5907민성4/21/2023289안녕하세요 서버 백업 문제에 대해서 [2]
5906guest4/21/2023306Dispatcher 서비스 구현 질문 [1]
5905guest4/20/2023292tabControl의 tabPage가 여러 개일 때 순서를 바꾸기가 까다롭네요 [5]
5904guest4/18/2023337[신규자료첨부] DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [4]파일 다운로드1
5903guest4/18/2023225fileSystemWatcher 이벤트 관련 질문입니다 [2]
5902guest4/17/2023347c#으로 USB 관련 질문 [2]
5901guest4/17/2023302내솔루션 판매 시 1.0.0.0 폴더와 Sqlite 배포 [5]
5900guest4/17/2023456DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [2]파일 다운로드1
5899guest4/17/2023333Dictionary와 Linq [4]
5898차가워4/17/2023294CNTK 교육 문의 [1]
5897guest4/17/2023281Socket스레드와 UI thread [4]
5896HAN4/16/2023289c언어 return 에 대해 궁금한게 있어요. [1]파일 다운로드1
5895guest4/15/2023278Drag and Drop - 모든 컨트롤 [2]
5894송부장4/14/2023423[질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다. [3]파일 다운로드2
5893감사...4/14/2023231오라클 OLEDB방식 접속 후 SELECT 'TEST' TEST_VALUE FROM DUAL의 값이 이상합니다. [1]
5892한무4/14/2023294C# 으로 백그라운드에서 워드를 실행하여 매크로 실행이 가능 할까요? [2]
5891리세4/14/2023297안녕하세요.C# 서버프로그램에서의 Mysql 쿼리문제(다중쿼리 실행)에 대해 문의드립니다. [2]
5890guest4/14/2023490C# 프리랜서로 돈 벌려면 성태님 책 마스터하면 되나요? [6]
5889전예찬4/14/2023278C# 파일 복사 관련 질문 드립니다. [3]
5888정경구4/12/2023363C# 첫 환경 세팅과 관련해서 [4]
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...