Cho mã này:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
Tại sao tôi không chỉ viết mã theo cách này?:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
Tôi sắp xếp để hiểu những gì các yield
từ khóa làm. Nó báo cho trình biên dịch xây dựng một loại điều nhất định (một trình vòng lặp). Nhưng tại sao lại sử dụng nó? Ngoài việc nó ít mã hơn một chút, nó làm gì cho tôi?
FullList.Where(IsItemInPartialList)
:)