I would strongly suggest using Monotouch over CS5. I only used Monotouch, so my answer will not be complete, but I can tell you about my experience with it.
Although this is just a subset of Mono, it brings many great C # features to the iPhone and has a 1: 1 binding with native APIs, which means you are learning how to develop for iphone using the native APIs. Due to the fact that this is a 1: 1 binding, if you encounter a problem, you can always see how this is done in Objective-C, and then apply it to C #.
Of course, Monotouch is really worth the price, I found a price that is worth it, thanks to constant updates and the amazing speed with which support staff will respond to any requests.
There is a huge community surrounding it - see Monotouch.info for an example that will link you to many great articles so you can get in your way.
source share