Microsoft MVP성태의 닷넷 이야기
ArrayList, IList에 대해 질문 있습니다. [링크 복사], [링크+제목 복사]
조회: 6431
글쓴 사람
한예지 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)
5881guest4/6/20232924static method - <에러메시지 Extension method must be defined in a non-generic static class> [4]
5880유비4/4/20232814WPF DataGrid CollectionView, IEditableCollectionView 관련 문의 [1]
5879guest4/4/20233035Async method의 에러 표시 [3]
5878guest4/3/20233095C#으로 CMOS 설정 변경가능한지요? [4]
5875guest4/2/20233518성태님 책을 완독 하고 Static [7]
5874민성4/1/20232913안녕하세요 질문 하나만 드릴깨요~ [1]
5873guest3/31/20233122제어판에서 삭제불가 MS Edge ---> 레지스트리 편집기에서도 안보임 [6]파일 다운로드1
58723/31/20232774web config 파일 확인부탁드려요 [6]
58713/31/20232698web config 파일 수정이요 [2]파일 다운로드1
5870guest3/30/20233163.NET Core SDK 삭제 시 주의 사항 [4]파일 다운로드1
5869guest3/30/20233388Dictionary의 Update 그리고 Foreach [7]
5868guest3/29/20232877Speech Recognition과 Form1 그리고 정확도 [4]파일 다운로드1
5866월급쟁이3/28/20232951cmake 크로스 컴파일 관련하여 질문이 있습니다 [1]
5865guest3/28/20232843Github Copilot과 코딩실력 향상? [1]
5864guest3/27/20233262System.NullReferenceException - 개체참조가 개체의 인스턴스... [6]파일 다운로드1
5863guest3/24/20233398이벤트 핸들러 사라짐 현상 - Button [4]
5862guest3/21/20233449세계최초 hts와 싱글스레드 [8]
5861다크파이썬3/21/20233577WPF를 사용하려고 하려고 도서 문의합니다. [2]
5860guest3/21/20232881인텔코어 i5 CPU와 스레드 [4]
5859guest3/21/20232757개발 일지 어떻게 관리하시나요? 이런 프로그램 없나요? [3]
5858김태원3/18/20232783안녕하세요! [5]
5857guest3/17/20232850귀도 반 로썸을 보고 [4]
5856guest3/17/20233135Form1_FormClosing에 closing time을 Sqlite 저장하는 법? [6]파일 다운로드1
5855욜로3/17/20232715C# 메타데이터에서 불러오는 참조 정의가 안됨 [1]
5854민성3/16/20232890안녕하세요 asp.net mvc using문 관련하여 [1]
5853pa3/16/20233147오피스 2016 업데이트 후 파일 출력 불가 [1]
1  2  [3]  4  5  6  7  8  9  10  11  12  13  14  15  ...