สมมติว่าประเภทขององค์ประกอบในไฟล์ส่วนหัวคือ T คุณสามารถทำได้
foreach(var header in file.Headers ?? Enumerable.Empty<T>()){
}
สิ่งนี้จะสร้างการแจกแจง T ถ้าไฟล์ว่างส่วนหัวเป็นโมฆะ หากประเภทของไฟล์เป็นประเภทที่คุณเป็นเจ้าของฉันจะพิจารณาเปลี่ยน getter Headers
แทน null
คือค่าที่ไม่รู้จักดังนั้นถ้าเป็นไปได้แทนที่จะใช้ null เป็น "ฉันรู้ว่าไม่มีองค์ประกอบ" เมื่อ null จริง (/ เดิม) ควรตีความว่า "ฉันไม่รู้ว่ามีองค์ประกอบใดบ้าง" ให้ใช้ชุดว่างเพื่อแสดง ที่คุณรู้ว่าไม่มีองค์ประกอบในชุด นั่นก็จะแห้งกว่าเช่นกันเนื่องจากคุณไม่ต้องทำการตรวจสอบค่าว่างบ่อยเท่า
แก้ไขตามข้อเสนอแนะของ Jons คุณยังสามารถสร้างวิธีการขยายโดยเปลี่ยนรหัสด้านบนเป็น
foreach(var header in file.Headers.OrEmptyIfNull()){
}
ในกรณีที่คุณไม่สามารถเปลี่ยน getter ได้นี่เป็นที่ต้องการของฉันเองเนื่องจากเป็นการแสดงเจตนาที่ชัดเจนยิ่งขึ้นโดยตั้งชื่อการดำเนินการ (OrEmptyIfNull)
วิธีการขยายที่กล่าวถึงข้างต้นอาจทำให้การเพิ่มประสิทธิภาพบางอย่างเป็นไปไม่ได้ที่เครื่องมือเพิ่มประสิทธิภาพจะตรวจพบ โดยเฉพาะอย่างยิ่งผู้ที่เกี่ยวข้องกับ IList โดยใช้วิธีการที่มากเกินไปนี้สามารถกำจัดได้
public static IList<T> OrEmptyIfNull<T>(this IList<T> source)
{
return source ?? Array.Empty<T>();
}