เมื่อฉันเขียนรหัสเช่นนี้โดยที่ obj เป็นตัวแปรท้องถิ่น:
if (obj is IMyInterface)
{
var result = (IMyInterface)obj;
// ....
}
Resharper เสนอให้เปลี่ยนเป็นรหัสดังนี้:
var result = obj as IMyInterface;
if (result != null)
{
// ...
}
ฉันชอบแบบเก่าเนื่องจากไม่มีข้อยกเว้นสำหรับการอ้างอิงเป็นโมฆะโดยไม่ได้ตั้งใจ เหตุผลอะไรที่ทำให้เลือกรูปแบบอื่น?
ทำไม Resharper จึงแนะนำสิ่งนี้