適切なタイプのオブジェクトがある場合にのみ一部のコードの実行を許可するためのガード句として、私が検討している 2 つの選択肢があります。
var targetObject = eventArgs.Value as MagicType;
if (targetObject != null)
{
DoStuffWith(targetObject);
}
またはそうでなければ:
if (targetObject is MagicType)
{
// DoStuffWith(targetObject); // not quite. Actually:
DoStuffWith((MagicType)targetObject);
}
両方の選択肢を見ると、かなり同等に見えますが、操作 ( as
vs is
) が概念的に異なることはわかっています。
問題は、どちらを優先すべきかということです。その選択はシナリオに依存しますか?なぜ?