2014-04-03 3 views
0

Java에서 오는 .net에 익숙하지 않습니다. 코드 줄은 ArrayList이지만 모든 요소는 MyType입니다. 템플릿이있는 ArrayList으로 어떻게 쉽게 캐스팅 할 수 있습니까? 다시 말하지만, 나는ArrayList를 ArrayList로 캐스팅하는 방법 <MyType>

ArrayList arr = getArrayList(); 

을하고 난

ArrayList<MyType> arr = getArrayList(); 

내가 ArrayList<MyType> arr = getArrayList() as ArrayList<MyType>을 시도하고자하지만 Class 'System.Collections.ArrayList' does not have type parameters

+4

아마도 'List '일까요? – Dmitry

+3

'ArrayList'는 제네릭 이전 일로부터의 잔류입니다. 그것은 당신이 원하는 것이 아닐 것입니다. – Magus

+0

@Magus 그럼 제네릭이 아닌 'ArrayList'를 제 귀환으로 가져 가려고했습니다. 그래서 적어도 조금만 작업해야합니다. –

답변

6

. 닷넷에서는 대신 List<T>을 사용해야합니다. 또한 변환하기 위해 캐스트 할 수 없습니다. 우리가에있는 동안 당신이 정말로 전혀 목록이 필요한지 여부, 당신은 확인해야합니다, 또는 일반 IEnumerable<MyType> 여부를 충분히 좋은 수 있습니다

List<MyType> arr = getArrayList().Cast<MyType>().ToList(); 

그리고 :

IEnumerable<MyType> arr = getArrayList().Cast<MyType>(); 

이 작업을 수행 할 필요가 또는

var arr = getArrayList().Cast<MyType>(); 
+0

비주얼 스튜디오 (Visual Studios)는 '캐스트'기호를 해결할 수 없다고 말합니다. 특정 네임 스페이스를 사용해야합니까? 또는 아마도 이전 버전의 .net을 사용하고있는 Im입니까? 내가 어떻게 확인할 수 있는지 아십니까? –

+0

'System.Linq'가 필요합니다 –

+0

이제 "메소드 그룹에서 메소드를 선택할 수 없습니다. 메소드를 호출 했습니까?" –

1

우리는 당신이 찾고있는 아마 인 C#에서 List<T> 클래스가 말했다.

List<MyType> arr = new List<MyType>(); 

ArrayList

는 일반적인 수집 아니고, 당신이 당신의 getArrayList() 유형 MyType 또는 MyType로 전환 될 수있는 몇 가지 유형의 항목이 포함 된 컬렉션을 반환 확신 강력한 typed.If하지, 당신은 사용할 수 있습니다 Enumerable.Cast 방법은, 그렇지 않으면 InvalidCastException을 방지하기 위해 OfType 방법을 사용하십시오 닷넷에서 일반 ArrayList 유형 (즉, 자바 일이) 없다

List<MyType> arr = getArrayList().OfType<MyType>().ToList(); 
+0

목록은 훌륭하지만 모든 것이 캐스팅 방법을 알려줍니다. –

0

당신은이 작업을 수행 할 수 있습니다 :

ArrayList yourList; 

List<MyType> list = yourList.Cast<MyType>().ToList(); 

ArrayList에 MyType이 아닌 항목이 있으면 InvalidCastException이 발생합니다.

System.Linq 네임 스페이스를 포함해야합니다.

관련 문제