I cannot really recommend Xamarin Studio (previously MonoDevelop) for C# development. It's so buggy that even Visual C# 2010 Express provides better experience. On Linux, where there is no alternative to Xamarin Studio, I would recommend using something other than C#.
C# was designed for IDEs. Microsoft is selling dev tools and they made sure that C# fits their business. While Xamarin Studio works well with more traditioinal language constructs, it will completely screw up formatting of LINQ queries. And C# without LINQ isn't C# anymore.
Xamarin Studio LINQ formatter will make the code jump around like crazy. It will behave differently depending on whether tabs or spaces are used. It will use odd indentation that makes no sense. Oftentimes I had to close and reopen the source file to resolve catastrophic failures of the editor.
Interestingly, several versions older Xamarin Studio on Lubuntu will do LINQ formatting correctly. I am not sure what to think about it. No test suite? Or perhaps someone at Xamarin ignores the failing tests. Or maybe they just think of the free users as a free tester pool? It doesn't sound good however I look at it.
Xamarin's built-in debugger consumes 100% of one CPU core for minutes while displaying "Evaluating..." message next to all variables in local variable view. Disabling property and ToString evaluation doesn't help. Debugger often fails to terminate the process, forcing me to use Task Manager to kill mdhost process.
My strongest motivation to try Xamarin Studio was the ability to debug NUnit tests. In Visual Studio Express, I had to create small command-line wrapper for my tests in order to be able to debug them. It is true that debugging of selected test is just a click away in Xamarin Studio. But the debugging experience is so painful that it makes my command-line wrapper in Visual Studio look like a minor hassle.
It is best to think of Xamarin Studio as a prototype. I have used the "stable" version, but the actual experience is much closer to alpha stage software. It's good enough to create some nice screenshots or even some videos that Xamarin team can post on their website, but it's of no use for everyday coding.
Perhaps it's all because I am using Windows to try Xamarin
Studio. It seems to use .NET debugger even though I've installed Mono
runtime that presumably includes the Mono Soft Debugger. I don't see any
way to force Xamarin Studio to use the soft debugger. Not sure whether
it is supported at all under Windows. My points about debugging might
not apply to Linux and Mac.
In any case, with no straightforward replacement for Visual Studio, I am now considering leaving the whole C#/.NET ecosystem behind. Since there's no direct open counterpart for C#, I would have to reconsider the way I use programming languages as well. Meantime, I am staying with VS Express.