Ketika saya menulis kode seperti ini, di mana obj adalah variabel lokal:
if (obj is IMyInterface)
{
var result = (IMyInterface)obj;
// ....
}
Resharper menawarkan untuk mengubahnya menjadi kode seperti ini:
var result = obj as IMyInterface;
if (result != null)
{
// ...
}
Saya lebih suka yang pertama, karena tidak menawarkan peluang untuk pengecualian referensi nol yang tidak disengaja. Alasan apa yang ada untuk memilih bentuk yang lain?
Mengapa Resharper merekomendasikan ini?