개체의 형식이 IEnumerable인지 확인하는 방법 <T>?컬렉션의 형식이 IEnumerable인지 확인 <T>
코드 :
namespace NS {
class Program {
static IEnumerable<int> GetInts() {
yield return 1;
}
static void Main() {
var i = GetInts();
var type = i.GetType();
Console.WriteLine(type.ToString());
}
}
}
출력 :
NS.1.Program+<GetInts>d__0
내가 IList의를 반환하는 GetInts을 변경하면 모든 것이 OK입니다 출력은 다음과 같습니다
System.Collections.Generic.List`1[System.Int32]
그리고이 false를 반환 :
당신이 그 그러나var asEnumerable = i as IEnumerable<int>;
if(asEnumerable != null) { ... }
, 내가 (이 예에서) 가정 있어요 Type
:
namespace NS {
class Program {
static IEnumerable<int> GetInts() {
yield return 1;
}
static void Main() {
var i = GetInts();
var type = i.GetType();
Console.WriteLine(type.Equals(typeof(IEnumerable<int>)));
}
}
}
을 'System.String'은'IEnumerable'을 구현한다는 것을 기억하십시오. –
mayu
@Tymek 참으로 - 원시 타입, 내장 타입 및 콜렉션을 다루는 라이브러리 작업을 많이하고 있습니다. 그리고 그 이유 때문에 일반화를 적용하기 전에'string' * 같은 시나리오를 추출하는 것이 사실상 항상 필요합니다. –
형식이 ICollection이고 IEnumerable 을 구현하는 경우 if 문은 true로 평가되지 않습니다. IEnumerable 또는 하위 클래스 중 하나임을 알 수있는 방법이 있습니까? –