Innanzitutto, unsafe
è utile per molto più dell'interop di C. Ad esempio, l'analisi delle immagini con i dati reali dei pixel può essere terribilmente lenta in modalità "sicura". Passa alla modalità non sicura, e facendo lo stesso lavoro con l'accesso diretto al buffer delle immagini, è più veloce di un ordine di grandezza.
Fare lo sviluppo all'ingrosso in C / C ++ per l'inclusione in un progetto .Net può certamente avere senso, ma tutto si riduce alle prestazioni. Il consiglio classico sarebbe quello di scrivere l'intera applicazione nella lingua prescelta, quindi nel profilo. Quando trovi una sezione critica di codice che impiega il 50% in più del tempo di elaborazione e non può più essere ottimizzata realisticamente mentre si utilizza un linguaggio gestito, quindi reimplementare quella routine in C e integrarla.
Un esempio di vita reale: stavo prototipando un algoritmo di individuazione dei percorsi. Dopo aver mostrato che funzionava con C #, avevo bisogno di renderlo abbastanza veloce da girare molte volte al secondo. Avevo già creato una bella interfaccia utente di supporto in C # che mostrava tutti i fattori utilizzati per le decisioni di routing, i risultati, ecc. Quindi ho reimplementato la parte principale dell'algoritmo di routing in C ++. Se avessi iniziato in C ++, dubito che sarei arrivato fino a qui.