The answer, surprisingly, is a qualified “yes”.
iPhone Apps and Android Apps execute in a Unix like environment – both are based on BSD Unix.
BSD is very like its better known cousin Linux, except that the license terms for BSD make it easier to customise – unlike Linux, with BSD you don’t have to make your modified source code public domain.
And .NET components can run on Unix (i.e. iPhone app and Android app environments), by using the Mono framework.
There are a few gotchas. Mono components will run slower than native components, and consume more memory – which can be an issue on memory constrained devices like mobile phones. So I would recommend against writing an entire app in Microsoft C#. In addition, some features won’t be wired up out of the box, so if you want to display a .NET XAML component on your iPhone app screen, you can look forward to a great deal of work.
But if you want to say create a native iPhone App or Android App, but embed a Microsoft .NET communication client component for talking to your backend system, then an embedded Mono system could provide a labour saving solution to your needs.
Mono also works on Linux servers – ASP.NET components can in many cases be run immediately after a Mono environment is installed on an Apache Linux system.
If you would like to know more about running Microsoft components in an iPhone app or Android app, please leave a comment, or contact Eric Worrall.