"Casting impact and performance in C#
I'll try here to discuss the difference between the two types of casting.
C# provides two ways for casting object references
object myClass = new MyClass();
((MyClass)myClass).MyMethod();
This is an example of downcasting (casting from the top to the bottom of
the class hierarchy).
In the first line of code, the compiler emits a "Castclass" opcode, which
converts the reference to the type specified between the parenthesis if
possible (if not, an InvalidCastException exception is thrown).
The second case is :
object myClass = new MyClass();
(myClass as MyClass).MyMethod();
here we use the as operator , which works much faster, because it only
checks the reference type but doesn't perform any sort of cast (nor throws
any exception).
In performance terms, it is better to use the second option, because it
speeds up much more the code execution, avoiding type casts and exception
throwing."
http://msdonet.blogspot.com/