UFO ET IT

시스템 변환.목록에 배열

ufoet 2023. 5. 13. 20:29
반응형

시스템 변환.목록에 배열

어젯밤 나는 다음과 같은 것이 불가능하다는 꿈을 꾸었습니다.하지만 같은 꿈에서 SO의 누군가가 제게 다르게 말했습니다.그래서 저는 변환이 가능한지 알고 싶습니다.System.Array로.List

Array ints = Array.CreateInstance(typeof(int), 5);
ints.SetValue(10, 0);
ints.SetValue(20, 1);
ints.SetValue(10, 2);
ints.SetValue(34, 3);
ints.SetValue(113, 4);

로.

List<int> lst = ints.OfType<int>(); // not working

고통을 덜고...

using System.Linq;

int[] ints = new [] { 10, 20, 10, 34, 113 };

List<int> lst = ints.OfType<int>().ToList(); // this isn't going to be fast.

그리고 그냥...

List<int> lst = new List<int> { 10, 20, 10, 34, 113 };

아니면...

List<int> lst = new List<int>();
lst.Add(10);
lst.Add(20);
lst.Add(10);
lst.Add(34);
lst.Add(113);

아니면...

List<int> lst = new List<int>(new int[] { 10, 20, 10, 34, 113 });

아니면...

var lst = new List<int>();
lst.AddRange(new int[] { 10, 20, 10, 34, 113 });

또한 List에 대한 생성자 오버로드가 있습니다...하지만 강력한 유형의 어레이가 필요할 것 같습니다.

//public List(IEnumerable<T> collection)
var intArray = new[] { 1, 2, 3, 4, 5 };
var list = new List<int>(intArray);

배열 클래스의 경우

var intArray = Array.CreateInstance(typeof(int), 5);
for (int i = 0; i < 5; i++)
    intArray.SetValue(i, i);
var list = new List<int>((int[])intArray);

흥미롭게도 아무도 질문에 대답하지 않습니다. OP는 강력한 유형을 사용하지 않습니다.int[]단 하나의Array.

당신은 그것이 실제로 무엇인지를 캐스팅해야 합니다, 그리고.int[]그러면 사용할 수 있습니다.ToList:

List<int> intList = ((int[])ints).ToList();

는 인수가 다음으로 캐스팅될 수 있는지 여부를 먼저 확인하는 목록 생성자를 호출합니다.ICollection<T>(어레이가 구현하는) 그런 다음 시퀀스를 열거하는 대신 더 효율적인 방법을 사용합니다.

가장 간단한 방법은 다음과 같습니다.

int[] ints = new [] { 10, 20, 10, 34, 113 };

List<int> lst = ints.ToList();

또는

List<int> lst = new List<int>();
lst.AddRange(ints);

열거형 배열을 목록으로 반환하려는 경우 다음을 수행할 수 있습니다.

using System.Linq;

public List<DayOfWeek> DaysOfWeek
{
  get
  {
    return Enum.GetValues(typeof(DayOfWeek))
               .OfType<DayOfWeek>()
               .ToList();
  }
}

vb.net 에서 그냥 이것을 하세요.

mylist.addrange(intsArray)

또는

Dim mylist As New List(Of Integer)(intsArray)

기본적으로 다음과 같이 할 수 있습니다.

int[] ints = new[] { 10, 20, 10, 34, 113 };

이것은 당신의 배열이며, 당신이 다음과 같이 당신의 새로운 목록을 부를 수 있습니다.

 var newList = new List<int>(ints);

복잡한 개체에 대해서도 이 작업을 수행할 수 있습니다.

코드를 사용해 보십시오.

Array ints = Array.CreateInstance(typeof(int), 5);
ints.SetValue(10, 0);

ints.SetValue(20, 1);
ints.SetValue(10, 2);
ints.SetValue(34, 3);
ints.SetValue(113, 4);

int[] anyVariable=(int[])ints;

그런 다음 anyVariable을 코드로 사용할 수 있습니다.

두 가지 방법을 알고 있습니다.

List<int> myList1 = new List<int>(myArray);

아니면.

List<int> myList2 = myArray.ToList();

데이터 유형에 대해 잘 알고 있으며 원하는 대로 유형을 변경할 것입니다.

기존 메서드를 사용하면 됩니다. .ToList();

   List<int> listArray = array.ToList();

키스(간단하게 유지)

이것이 도움이 되기를 바랍니다.

enum TESTENUM
    {
        T1 = 0,
        T2 = 1,
        T3 = 2,
        T4 = 3
    }

문자열 값 가져오기

string enumValueString = "T1";

        List<string> stringValueList =  typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m => 
            Convert.ToString(m)
            ).ToList();

        if(!stringValueList.Exists(m => m == enumValueString))
        {
            throw new Exception("cannot find type");
        }

        TESTENUM testEnumValueConvertString;
        Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertString);

정수 값 가져오기

        int enumValueInt = 1;

        List<int> enumValueIntList =  typeof(TESTENUM).GetEnumValues().Cast<object>().Select(m =>
            Convert.ToInt32(m)
            ).ToList();

        if(!enumValueIntList.Exists(m => m == enumValueInt))
        {
            throw new Exception("cannot find type");
        }

        TESTENUM testEnumValueConvertInt;
        Enum.TryParse<TESTENUM>(enumValueString, out testEnumValueConvertInt);

언급URL : https://stackoverflow.com/questions/1603170/conversion-of-system-array-to-list

반응형