7
'is' เทียบกับลองแคสต์ด้วยการตรวจสอบ null
ฉันสังเกตว่า Resharper แนะนำให้ฉันเปลี่ยนสิ่งนี้: if (myObj.myProp is MyType) { ... } ในสิ่งนี้: var myObjRef = myObj.myProp as MyType; if (myObjRef != null) { ... } เหตุใดจึงแนะนำการเปลี่ยนแปลงนี้ ฉันคุ้นเคยกับ Resharper ที่แนะนำการเปลี่ยนแปลงการเพิ่มประสิทธิภาพและการเปลี่ยนแปลงการลดรหัส แต่สิ่งนี้รู้สึกว่าต้องการใช้คำสั่งเดียวของฉันและเปลี่ยนเป็นสองซับ ตามMSDN : คือ การแสดงออกประเมินจริงถ้าทั้งสองเงื่อนไขต่อไปนี้: นิพจน์ไม่เป็นโมฆะ สามารถส่งนิพจน์ไปพิมพ์ได้ นั่นคือการแสดงออกของแบบฟอร์ม(type)(expression)จะสมบูรณ์โดยไม่มีข้อยกเว้น ฉันอ่านผิดหรือไม่ได้isทำการตรวจสอบแบบเดียวกันทุกประการเพียงแค่บรรทัดเดียวโดยไม่จำเป็นต้องสร้างตัวแปรท้องถิ่นอื่นอย่างชัดเจนสำหรับการตรวจสอบ null