รับรหัสนี้:
IEnumerable<object> FilteredList()
{
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
yield return item;
}
}
ทำไมฉันไม่ควรเขียนโค้ดด้วยวิธีนี้:
IEnumerable<object> FilteredList()
{
var list = new List<object>();
foreach( object item in FullList )
{
if( IsItemInPartialList( item ) )
list.Add(item);
}
return list;
}
ฉันเข้าใจว่าyield
คำหลักทำอะไร มันบอกให้คอมไพเลอร์สร้างสิ่งที่แน่นอน (ตัววนซ้ำ) แต่ทำไมต้องใช้มัน? นอกจากจะเป็นรหัสน้อยกว่าแล้วมันจะทำยังไงให้ฉัน
FullList.Where(IsItemInPartialList)
:)