Why use TryCast instead of DirectCast?
The only difference between the two is that, a TryCast
will return a null if it fails, while a DirectCast
will throw an exception.
These has implications on how you can handle your program. Personally I prefer not having to throw an exception if the possibility of an improper cast (e.g., text input boxes for user input being cast into numeric types) is pretty high.
(For C# developers, TryCast
is similar to "as" and DirectCast
is the equivalent of normal casting. As Mike pointed out in the comments, "as" works for nullable value types, but TryCast
doesn't.)
If the value really should be a T
, then DirectCast
is indeed the right way to go - it fails fast, with an appropriate error.
TryCast
is appropriate when it's legitimate for the target to be the "wrong" type. For instance, to get all the Button controls in a container, you could go through the control collection and try to cast each to Button. If it works, you do something with it - if it doesn't, you move on. (With LINQ you can just use OfType
for this purpose, but you see what I mean...)
In my experience direct casting is appropriate more often than TryCast
- although with generics I find myself casting a lot less often than I used to anyway.