I would have to think about it more about how I like it ... my gut instinct, ah, not so much ...
EDITOR: Ryan Fox's comments on the exceptional case are ideal, I agree
In terms of performance, it depends on the collection indexer. C # allows you to override the indexer operator, so if it executes a for loop similar to the contains method you would write, then it will be just as slow (maybe a few nanoseconds slower due to try / catch ... but there is nothing to worry about about if this code itself is not in a huge loop).
If the index is O (1) (or even O (log (n)) ... or something faster than O (n)), then the try / catch solution will certainly be faster.
Also, I assume that indexer throws an exception, if it returns null, you can of course just check for null and not use try / catch.
Mike stone
source share