Да, вы можете писать на c # или других языках dotnet, таких как VB.Net, при компиляции с Mono. Mono компилирует ваш код в IL (промежуточный язык), который вы развертываете, а затем получает JIT (как раз вовремя), скомпилированный при запуске.
Mono может работать на нескольких платформах, таких как Windows, Mac OSX, Linux и даже iPhone. Хотя с реализацией для iPhone, я полагаю, что ваш код фактически компилируется в Objective C, который затем компилируется в собственный код, а не в IL.