Well, they aren’t a bad idea I think. Dictionary<K, V> has a TryGetValue method which is a very good example why out parameters are sometimes a very nice thing to have.
You should not overuse this feature of course, but it’s not a bad idea per definition. Especially not in C# where you have to write down the out keyword in function declaration and call which makes it obvious what’s going on.