ดังนั้นฉันมักพบในสถานการณ์นี้ ... ซึ่ง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ลูปหรือข้อความอื่น ๆ เช่นกัน?