При чтении кода на С# я нашел довольно любопытный фрагмент:
if( whatever is IDisposable) {
(whatever as IDisposable).Dispose();
}
Я бы предпочел, чтобы это было сделано так:
if( whatever is IDisposable) { //check
((IDisposable)whatever).Dispose(); //cast - won't fail
}
или вот так:
IDisposable whateverDisposable = whatever as IDisposable;
if( whateverDisposable != null ) {
whateverDisposable.Dispose();
}
Я имею в виду as
, как приведение, но возвращает null
при ошибке. Во втором фрагменте он не может потерпеть неудачу (так как там есть проверка is
).
Какой смысл писать код, как в первом фрагменте, а не как во втором или в третьем?