[C#] 일반적인 방법에서foreach를 사용하고자 함

7528 단어 GenericsC#
다양한 목록을 디버깅할 수 있는 임시 함수를 정의하고 싶어서 방법 노트
TL;DR
이렇게 하면.정의되지 않은 중 오류가 발생했습니다.

처리로 4GetEnumerator그리고 모델에 제약 조건을 더하는 것이 좋다.
=>[보충] 주석 중where Type : IList"Power"를 사용하는 것이 더 일반적이라는 지적이 있습니다.그렇긴 한데.
샘플 코드
샘플 코드
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace hwapp
{
    class Hoge {
        public int i;
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Array
            int[] intArray = Enumerable.Range(0, 10).ToArray();
            PPrint(intArray);

            // List<int>
            List<int> intList = Enumerable.Range(0, 10).ToList();
            PPrint(intList);

            // List<T>
            List<Hoge> hogeList = Enumerable.Range(0, 10).Select(i => new Hoge { i = i * 10 }).ToList();
            PPrint(hogeList);
        }

        static void PPrint<Type> (Type T)
            where Type : IList
        {
            foreach (var obj in T)
            {
                if (obj is Hoge hoge) {
                    Console.WriteLine($"[{T.GetType()}] {hoge.i}");
                }
                else {
                    Console.WriteLine($"[{T.GetType()}] {obj}");
                }
            }
        }
    }
}
실행 결과
[System.Int32[]] 0
[System.Int32[]] 1
[System.Int32[]] 2
[System.Int32[]] 3
[System.Int32[]] 4
[System.Int32[]] 5
[System.Int32[]] 6
[System.Int32[]] 7
[System.Int32[]] 8
[System.Int32[]] 9
[System.Collections.Generic.List`1[System.Int32]] 0
[System.Collections.Generic.List`1[System.Int32]] 1
[System.Collections.Generic.List`1[System.Int32]] 2
[System.Collections.Generic.List`1[System.Int32]] 3
[System.Collections.Generic.List`1[System.Int32]] 4
[System.Collections.Generic.List`1[System.Int32]] 5
[System.Collections.Generic.List`1[System.Int32]] 6
[System.Collections.Generic.List`1[System.Int32]] 7
[System.Collections.Generic.List`1[System.Int32]] 8
[System.Collections.Generic.List`1[System.Int32]] 9
[System.Collections.Generic.List`1[hwapp.Hoge]] 0
[System.Collections.Generic.List`1[hwapp.Hoge]] 10
[System.Collections.Generic.List`1[hwapp.Hoge]] 20
[System.Collections.Generic.List`1[hwapp.Hoge]] 30
[System.Collections.Generic.List`1[hwapp.Hoge]] 40
[System.Collections.Generic.List`1[hwapp.Hoge]] 50
[System.Collections.Generic.List`1[hwapp.Hoge]] 60
[System.Collections.Generic.List`1[hwapp.Hoge]] 70
[System.Collections.Generic.List`1[hwapp.Hoge]] 80
[System.Collections.Generic.List`1[hwapp.Hoge]] 90
참고 자료
Jeric-C# 기반 프로그래밍 시작 | + C++;//미확인 비행 C
LINQ의 그 Fore Each, 사실 Select로도 고칠 수 있어요. - Qiita.
Type.GetType 방법(String)(System)

좋은 웹페이지 즐겨찾기