programing

foreach를 사용하지 않고 ArrayList를 강력한 형식의 제네릭 목록으로 변환하는 방법은 무엇입니까?

nasanasas 2020. 12. 29. 07:11
반응형

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();

CastToList의 확장 방법이다 System.Linq.Enumerable클래스.

참조 URL : https://stackoverflow.com/questions/786268/how-to-convert-an-arraylist-to-a-strongly-typed-generic-list-without-using-a-for

반응형