C# also supports both implicit and explicit casts and gives you some different choices when you need to switch types. Plus you have a runtime that is ready to throw an InvalidCastException. But even if you do not hit an exception, there are some things you should be aware of. This is still casting.