Cách xác định xem đối tượng có thuộc loại IEnumerable <T> không?Xác định xem bộ sưu tập có thuộc loại IEnumerable <T>
Code:
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());
}
}
}
Output:
NS.1.Program+<GetInts>d__0
Nếu tôi thay đổi GetInts trở IList, mọi thứ đều OK đầu ra là:
System.Collections.Generic.List`1[System.Int32]
Và đây trả về false:
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>)));
}
}
}
Chỉ cần nhớ rằng 'System.String' thực hiện' IEnumerable '. –
mayu
@Tymek thực sự - Tôi làm khá nhiều công việc thư viện xử lý các kiểu nguyên thủy và sẵn có, và hầu như luôn luôn cần thiết để rút ra các kịch bản như 'string' * trước khi áp dụng các khái quát hóa, vì những lý do đó. –
nếu loại là ICollection, mà thực hiện IEnumerable , nếu tuyên bố không đánh giá đúng. Có cách nào để nói rằng nó là IEnumerable hoặc bất kỳ lớp con của nó? –