ดังนั้นฉันมักพบในสถานการณ์นี้ ... ซึ่งDo.Something(...)
ส่งกลับคอลเลกชัน null เช่น:
int[] returnArray = Do.Something(...);
จากนั้นฉันพยายามใช้คอลเล็กชันนี้เช่น:
foreach (int i in returnArray)
{
// do some more stuff
}
ฉันแค่อยากรู้อยากเห็นทำไมห่วง foreach ไม่สามารถทำงานในคอลเลกชันโมฆะ? มันดูเหมือนว่าตรรกะกับผมว่า 0 ซ้ำจะได้รับการดำเนินการด้วยคอลเลกชันโมฆะ ... NullReferenceException
แทนที่จะพ่น ใครรู้ว่าทำไมสิ่งนี้อาจเป็น
นี่เป็นเรื่องที่น่ารำคาญเพราะฉันทำงานกับ API ที่ไม่ชัดเจนว่าพวกเขากลับมาได้อย่างไรดังนั้นฉันก็เลยลงเอยด้วยif (someCollection != null)
ทุกที่ ...
แก้ไข:ขอบคุณทุกท่านสำหรับคำอธิบายที่foreach
ใช้GetEnumerator
และหากไม่มีตัวแจงนับที่จะได้รับ foreach จะล้มเหลว ฉันเดาว่าฉันถามว่าทำไมภาษา / รันไทม์ไม่สามารถหรือไม่ตรวจสอบโมฆะก่อนที่จะจับตัวแจงนับ สำหรับฉันดูเหมือนว่าพฤติกรรมจะยังคงชัดเจน
null
ค่า คุณกำลังแนะนำสิ่งนี้สำหรับแค่foreach
ลูปหรือข้อความอื่น ๆ เช่นกัน?