Trong khi làm việc với các phần mở rộng LINQ nó là bình thường để xem mã như thế này:Mở rộng LINQ để chấp nhận enumerables nullable
IEnumerable<int> enumerable = GetEnumerable();
int sum = 0;
if (enumerable != null)
{
sum = enumerable.Sum();
}
Nhằm nâng cao chất lượng mã, tôi đã viết các phương pháp khuyến nông sau đó kiểm tra các enumerables nullable và phá vỡ thực thi LINQ.
public static IEnumerable<T> IgnoreIfEmpty<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null) yield break;
foreach (var item in enumerable)
{
yield return item;
}
}
Vì vậy, tôi có thể cấu trúc mã là như thế này:
var sum = GetEnumerable().IgnoreIfEmpty().Sum();
Câu hỏi của tôi bây giờ là:
- gì các hình phạt có liên quan đến phương pháp khuyến nông của tôi trong thời gian chạy?
- Có thực tiễn tốt để mở rộng LINQ theo cách đó không?
Cập nhật: khuôn khổ mục tiêu của tôi là: 3,5
'IgnoreIfEmpty' không phải là một tên tuyệt vời, vì" Bỏ qua "là mơ hồ, và một enumerable rỗng là khác nhau từ một null. –
Nếu bạn có quyền kiểm soát các phương thức 'GetEnumerable', bạn thực sự cần trả về các bộ sưu tập rỗng thay vì null. –
@ DarrenYoung, tôi không thể kiểm soát được GetEnumerable. cộng với null được mong đợi trở lại. –