‘is’ versus try cast with null check
Because there’s only one cast. Compare this: if (myObj.myProp is MyType) // cast #1 { var myObjRef = (MyType)myObj.myProp; // needs to be cast a second time // before using it as a MyType … } to this: var myObjRef = myObj.myProp as MyType; // only one cast if (myObjRef != null) { // myObjRef …