我正在考虑两种替代方案作为保护子句,仅当我有正确类型的对象时才允许运行某些代码:
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
)在概念上是不同的。
所以问题是:应该首选哪一个?这个选择取决于场景吗?为什么?