[C#] 일반적인 방법에서foreach를 사용하고자 함
TL;DR
이렇게 하면.정의되지 않은 중 오류가 발생했습니다.
처리로 4
GetEnumerator
그리고 모델에 제약 조건을 더하는 것이 좋다.=>[보충] 주석 중
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)
Reference
이 문제에 관하여([C#] 일반적인 방법에서foreach를 사용하고자 함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koara-local/items/294a436cda95ac952909텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)