2013-08-07 4 views
0

코드 분석을 실행하는 중에 함수에 대한 경고가 표시됩니다.목록을 <T>으로 지정하면 경고 메시지가 표시됩니다.

함수 서명은 다음과 같습니다 public int ExecuteAscommand(List<string> Commands)

경고 메시지는 다음과 같습니다 컬렉션, Readonlycollection 또는 KeyedCollection로 변경 목록.

MSDN은 List가 perfromance optmizied이지만 상속을 위해 설계되지 않았기 때문에이 시나리오를 설명합니다 .After는 재사용 가능한 라이브러리로 사용되지 않는 경우에만 경고를 표시하지 않습니다.

내 함수는 목록에서 모든 항목을 읽고 데이터로 작업을 수행하는 것 이상을 수행하지 않습니다. 그 밖의 것은 없습니다. 그러나이 함수는 내가 재사용 할 수있는 라이브러리의 일부입니다.

매개 변수 유형을 List에서 다른 유형으로 변경해야합니까?

답변

4

모든 명령을 열거하는 경우 (사용자 인터페이스) 형식은 IEnumerable<string>이어야합니다. 그런 식으로 사용자는 인터페이스, 즉 배열, 목록, 컬렉션 또는 foreach 루프에 넣을 수있는 모든 것을 전달할 수 있습니다.

0

컬렉션을 IList 또는 이와 유사한 것으로 표시하는 경우 실제 백킹 스토어로 List를 사용할 수 있지만 나중에 클래스의 공용 계약을 변경하지 않고 고유 구현을 스왑 할 수 있으므로 향후 확장 성을 유지할 수 있습니다 .

반면에 List는 하위 클래스로 쉽게 확장 할 수 있도록 설계되지 않았습니다. List의 주된 목적은 내부 구현을 위해서 빠르다는 것입니다. 그것의 메소드가 가상이 아니라는 것을 알 수 있습니다.