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

선생님 안녕하세요!

몇몇 코드가 아래와 같이 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)
5866월급쟁이3/28/202312269cmake 크로스 컴파일 관련하여 질문이 있습니다 [1]
5865guest3/28/202312318Github Copilot과 코딩실력 향상? [1]
5864guest3/27/202313498System.NullReferenceException - 개체참조가 개체의 인스턴스... [6]파일 다운로드1
5863guest3/24/202312387이벤트 핸들러 사라짐 현상 - Button [4]
5862guest3/21/202312899세계최초 hts와 싱글스레드 [8]
5861다크파이썬3/21/202313748WPF를 사용하려고 하려고 도서 문의합니다. [2]
5860guest3/21/202312629인텔코어 i5 CPU와 스레드 [4]
5859guest3/21/202311902개발 일지 어떻게 관리하시나요? 이런 프로그램 없나요? [3]
5858김태원3/18/202312261안녕하세요! [5]
5857guest3/17/202312077귀도 반 로썸을 보고 [4]
5856guest3/17/202313067Form1_FormClosing에 closing time을 Sqlite 저장하는 법? [6]파일 다운로드1
5855욜로3/17/202311734C# 메타데이터에서 불러오는 참조 정의가 안됨 [1]
5854민성3/16/202311908안녕하세요 asp.net mvc using문 관련하여 [1]
5853pa3/16/202312508오피스 2016 업데이트 후 파일 출력 불가 [1]
5852guest3/16/202311276입력 foreach 검색/출력 foreach [3]
5851guest3/15/202312458foreach내 list변경 [10]
5850독서가3/14/202311173C#에서 동적dll 사용시 문의입니다. [4]파일 다운로드1
5849guest3/9/202312558C# wpf로 Web에서 구동되는 hts가능한가요? (노트북없고 스마트폰 없음) [4]
5848민성3/9/202311820도움 요청드립니다. [2]파일 다운로드1
5847guest3/7/202312034SQlike Like 구문 - 1시간째 인데 안되네요 [13]
5846Huuu...3/7/202310556웹 다운로드에 대한 고찰 [5]파일 다운로드1
5845guest3/7/202311037C# Split함수의 불친절함 [1]
5844까망이3/7/202311084c# 무료 디컴파일러는 어떤게 좋습니까? [1]
5843guest3/7/202311543판매 후 dll 등 에러 [5]
5842kr13/6/202311276publish 할 때 분석기 관련 dll 제외 [5]
5841guest3/3/202311655프로그램 판매 시 - Upgrade 버전 판매 [2]
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...