2009-04-14 2 views
2

C#의 메소드에 ArrayList를 인수로 전달할 수 있습니까?C#의 ArrayList

+0

-1. 당신은 이전에이 질문을했습니다 : http://stackoverflow.com/questions/746898/arraylist-in-session –

답변

18

. 그러나, 당신은 거의하지 않아야합니다. 요즘 거의 이어야합니다. 은 List<T>과 같이 제네릭 형식을 사용해야합니다.

또한 매개 변수을 메서드로 선언 할 때 가능한 한 인터페이스를 사용하는 것이 좋습니다.

public void SomeMethod(ArrayList list) 

다음 사람이 ArrayList를 사용하는를 강제로 호출 : 예를 들어, 만약 당신이 이런 방법을했다. 원하는 경우에도 List<T>을 사용할 수 없습니다. 반면에, 당신은 귀하의 방법을 선언하는 경우 :

public void SomeMethod(IList list) 

코드가 그들에 대해 알지 못하는 경우에도 그들은 제네릭을 사용할 수 있습니다.

+0

전적으로 동의하지 않습니다 Jon, 배열은 내부적으로 (개인 범위) 사용할 수 있지만 공용 인터페이스에 ArrayList를 사용해서는 안됩니다. 성능상의 이유로. –

+0

배열 또는 arraylists를 의미합니까? 성능상의 이유로 내부 API에 ArrayList를 지정하지 않을 것입니다. 그 이유는 그것이 실제로 중요하다는 증거가 없기 때문입니다. 제네릭을 사용할 수있는 경우 ArrayList를 사용하지 않을 것입니다. –

+0

목록 및 일반 제네릭은 일련 번호를 매기는 데 문제가있을 수 있습니다. 비누 웹 서비스를 사용하면 모음은 항상 이런 이유 때문에 배열입니다. –

1

예 가능합니다.

0

모든 유형을 메소드의 인수로 전달할 수 있습니다. 추상적 인 것이 든 인터페이스이든 값 유형이든간에.

Jon Skeet은 인터페이스를 사용하여 언급합니다. 예, 좋지만 작은 함정이 있습니다. 그 방법에서 사용법을 쉽게 탐색 할 수 없습니다.