문제

나는 Jon On 의이 대답을 보았다 알 수없는 유형으로 일반 객체를 초기화합니다:

그러나 단일 컬렉션에 여러 개의 관련이없는 값이 포함되도록하려면 사용해야합니다. List<object>

나는 비교하지 않는다 ArrayList vs List<>, 하지만 ArrayList vs List<object>, 둘 다 유형의 요소를 노출 할 것입니다 object. 이 경우 두 가지를 사용하면 어떤 이점이 있습니까?

편집 : 두 수업 모두 노출되기 때문에 유형 안전에 대한 관심이 없습니다. object 항목으로. 하나는 여전히 캐스팅해야합니다 object 원하는 유형으로. 나는 유형 안전 이외의 다른 것에 더 관심이 있습니다.

편집 : 답변 해 주신 Marc Gravell과 Sean에게 감사드립니다. 죄송합니다. 답변으로 1을 선택할 수 있으므로 둘 다 투표 할 것입니다.

도움이 되었습니까?

해결책

LINQ 확장 메소드를 직접 사용할 수 있습니다. List<object>, 그러나 그렇지는 않습니다 ArrayList, 당신이 a를 주입하지 않는 한 Cast<object>() / OfType<object> (감사합니다 IEnumerable<object> vs IEnumerable). 유형 안전이 필요하지 않더라도 그만한 가치가 있습니다.

속도는 거의 동일합니다. 스트러크는 여전히 박스형 등이 있으므로 구별 할 것이 많지 않습니다. 내가 보는 경향이 있다는 점을 제외하고 ArrayList "죄송합니다. 누군가가 레거시 코드를 다시 쓰고 있습니다 ..."; -P

다른 팁

사용하면 큰 이점 중 하나입니다 List<object> 요즘 대부분의 코드는 일반 클래스/인터페이스를 사용하도록 작성되었습니다. 요즘 대부분의 사람들은 IList<object> 대신 IList. 부터 ArrayList 구현하지 않습니다 IList<object> 이 시나리오에서 배열 목록을 사용할 수 없습니다.

비 게 니체 클래스/인터페이스를 레거시 코드로 생각하고 가능할 때마다 피하는 경향이 있습니다.

이 경우 ArrayList vs. List<Object> 그러면 속도의 차이를 알지 못할 것입니다. 이들 각각, 특히 .NET 3.5 및 확장 방법을 계산하는 실제 방법에는 약간의 차이가있을 수 있지만 ArrayList가 다른 어떤 것보다 다소 감가 상각되는 것과 더 관련이 있습니다.

예, TypeSafe 외에도 일반 컬렉션이 실제로 더 빠를 수 있습니다.

MSDN에서 (http://msdn.microsoft.com/en-us/library/system.collections.generic.aspx)

그만큼 System.collections.generic네임 스페이스에는 일반 컬렉션을 정의하는 인터페이스 및 클래스가 포함되어있어 사용자가 비 게니어 강력하게 입력 된 컬렉션보다 더 나은 유형 안전 및 성능을 제공하는 강력하게 입력 된 컬렉션을 만들 수 있습니다.

벤치마킹을하면 가장 잘 수행되는 것이 무엇인지 알 수 있습니다. 나는 그 차이가 매우 작다는 것을 손님했다.

List <>은 ArrayList의 TypeSafe 버전입니다. 컬렉션에서 동일한 객체 유형을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top