Would there be any performance differences between these two chunks?
public void doSomething(Supertype input)
{
Subtype foo = (Subtype)input;
foo.methodA();
foo.methodB();
}
vs.
public void doSomething(Supertype input)
{
((Subtype)input).methodA();
((Subtype)input).methodB();
}
Any other considerations or recommendations between these two?
Well, the compiled code probably includes the cast twice in the second case – so in theory it’s doing the same work twice. However, it’s very possible that a smart JIT will work out that you’re doing the same cast on the same value, so it can cache the result. But it is having to do work at least once – after all, it needs to make a decision as to whether to allow the cast to succeed, or throw an exception.
As ever, you should test and profile your code if you care about the performance – but I’d personally use the first form anyway, just because it looks more readable to me.