반응형
foreach를 사용하지 않고 ArrayList를 강력한 형식의 제네릭 목록으로 변환하는 방법은 무엇입니까?
아래 코드 샘플을 참조하십시오. ArrayList
일반 목록이 필요합니다 . 사용하고 싶지 않습니다 foreach
.
ArrayList arrayList = GetArrayListOfInts();
List<int> intList = new List<int>();
//Can this foreach be condensed into one line?
foreach (int number in arrayList)
{
intList.Add(number);
}
return intList;
다음을 시도하십시오
var list = arrayList.Cast<int>().ToList();
이것은 3.5 프레임 워크에 정의 된 특정 확장 메서드를 활용하기 때문에 C # 3.5 컴파일러를 사용하는 경우에만 작동합니다.
이것은 비효율적이지만 (불필요하게 중간 배열을 만듭니다) 간결하며 .NET 2.0에서 작동합니다.
List<int> newList = new List<int>(arrayList.ToArray(typeof(int)));
확장 방법을 사용하는 것은 어떻습니까?
에서 http://www.dotnetperls.com/convert-arraylist-list :
using System;
using System.Collections;
using System.Collections.Generic;
static class Extensions
{
/// <summary>
/// Convert ArrayList to List.
/// </summary>
public static List<T> ToList<T>(this ArrayList arrayList)
{
List<T> list = new List<T>(arrayList.Count);
foreach (T instance in arrayList)
{
list.Add(instance);
}
return list;
}
}
.Net 표준 2에서 사용하는 Cast<T>
것이 더 좋은 방법입니다.
ArrayList al = new ArrayList();
al.AddRange(new[]{"Micheal", "Jack", "Sarah"});
List<int> list = al.Cast<int>().ToList();
Cast
및ToList
의 확장 방법이다System.Linq.Enumerable
클래스.
반응형
'programing' 카테고리의 다른 글
NetBeans에서 숨겨진 또는 보이지 않는 문자를 표시 / 표시하는 방법은 무엇입니까? (0) | 2020.12.30 |
---|---|
중첩 함수는 Python에서 어떻게 작동합니까? (0) | 2020.12.30 |
문자열에 다른 문자열이 포함되어 있지 않은지 확인 (0) | 2020.12.29 |
.NET에서 리플렉션을 사용하는 것이 권장되는 이유는 무엇입니까? (0) | 2020.12.29 |
Python이 인코딩 할 수있는 모든 인코딩 목록을 가져옵니다. (0) | 2020.12.29 |