d as decimal
if decimal.tryParse(input, out d)
print 'safe to use d: [d]'
What if parse returned a nilable type such as "int?", "float?" and "decimal?". Then you can just check the return value:
d = decimal.parse(input)
if d, print 'safe to use d: [d]'
Which also means you could use the "coalesce" operator if you wanted a default value for unparseable input:
d = decimal.parse(input) ? 0.0
I don't see any disadvantages over the existing parse+tryParse unless you really need to distinguish the exceptions (overflow vs. bad input, for example).
Unfortunately, the name "parse" is already occupied by the .NET library, so we would need a to sue different name like "decimal.parseable(input)", or tweak the compiler so that this new .parse obscures the original one.
Feedback?