Moltissima
Giusto qualche confronto sulla sintassi:
http://www.texnomic.com/blog/?p=692
Fondamentalmente, per fare le stesse cose, con O-C ci metti almeno il doppio del tempo che con C#, a questo tempo in più devi aggiungerci lo svantaggio nel non poter usare Visual Studio, il miglior IDE in circolazione. E credimi, quando il lavoro diventa tanto e i progetti complessi, Visual Studio ti aiuta più di un collega che programmi al posto tuo
Con VS + C# posso tirarti su un'app in pochissimo tempo, con O-C considera di doverci mettere dalle 2 alle 3 volte tanto.
Questo perché O-C non è affatto un linguaggio moderno e quindi manca di molti strumenti che ti permettono di lavorare con un più alto livello di astrazione rispetto a C#.
LINQ su tutti, strumento che permette di effettuare query su collezioni di oggetti, come fosse un database. Non solo, accoppiato alla ObservableCollection (un tipo di lista ""avanzato"") ti permette di fare cose pazzesche.
Ad esempio, hai una lista di libri caricata da un database (di tipo LINQ to SQL), vuoi derivare da quella lista una lista di libri che siano della categoria gialli, per visualizzarli all'utente.
Codice:
ObservableCollection<Libro> TuttiILibri() = DataBase.LoadLibri();
ObservableCollection LibriGialli<Libro> = new ObservableCollection(from libro in TuttiILibri where libro.Categoria == "giallo" select libro);
Fatto in 2 righe!

Ora in LibriGialli ho solo i libri della categoria "gialli". Ma qui viene la parte bella, ipotizziamo che LibriGialli sia collegato (data binding) ad un controllo UI che li visualizza a schermo, e che all'utente sia fornito un comando per cancellare o modificare un qualsiasi parametro dell'oggetto libro (che sia titolo autore categoria o altro non importa).
Quando l'utente preme il comando, il libro che si trova in LibriGialli viene modificato. Questo fa si che AUTOMATICAMENTE, senza che tu debba programmare una sola riga di codice, la modifica va a cascata su LibriGialli, poi su TuttiILibri (dato che LibriGialli deriva da TuttiILibri) fino ad arrivare a modificare il database! Allo stesso tempo una modifica fatta al database si riflette in senso inverso a tutti i livelli superiori, visualizzando all'utente la modifica, sempre senza scrivere una sola riga.
In circa 5-10 righe di codice tu puoi scrivere l'esempio che ti ho descritto qui sopra, compreso il comando di modifica e la visualizzazione dei dati all'utente (considerando di avere il DB già scritto), con O-C non basterebbe lo spazio in questo post.
Per lo sviluppo di app o di software non di basso livello, C# è (quasi) sempre la scelta migliore.
Questo non vuol dire, ovviamente, che O-C non serva a nulla.
Infatti ti permette di gestire la memoria o di effettuare operazioni a basso livello che C# non ti permette di fare. Dipende tutto da quello che devi fare tu
