จะวนซ้ำคอลเลกชันที่รองรับ IEnumerable ได้อย่างไร?
จะวนซ้ำคอลเลกชันที่รองรับ IEnumerable ได้อย่างไร?
คำตอบ:
ปกติสำหรับแต่ละคนจะทำ:
foreach (var item in collection)
{
// do your stuff
}
นอกเหนือจากวิธีการใช้foreach
ลูปที่แนะนำไปแล้วฉันคิดว่าฉันยังพูดถึงว่าวัตถุใด ๆ ที่ใช้IEnumerable
ยังมีIEnumerator
อินเทอร์เฟซผ่านGetEnumerator
วิธีการ แม้ว่าโดยปกติแล้ววิธีนี้จะไม่จำเป็น แต่ก็สามารถใช้สำหรับการทำซ้ำคอลเลกชันด้วยตนเองและมีประโยชน์อย่างยิ่งเมื่อเขียนวิธีการขยายสำหรับคอลเลกชันของคุณเอง
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
ตัวอย่างที่สำคัญคือเมื่อคุณต้องการวนซ้ำสองลำดับพร้อมกันซึ่งไม่สามารถทำได้ด้วยการforeach
วนซ้ำ
หรือแม้กระทั่งวิธีการแบบเก่าที่คลาสสิกมาก
IEnumerable<string> collection = new List<string>() { "a", "b", "c" };
for(int i = 0; i < collection.Count(); i++)
{
string str1 = collection.ElementAt(i);
// do your stuff
}
บางทีคุณอาจต้องการวิธีนี้ด้วย :-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}
บางทีคุณอาจลืมรอก่อนที่จะส่งคืนคอลเลกชันของคุณ