Come già sottolineato da altri, i nomi dei membri compilati sono esattamente gli stessi dei nomi scritti nel codice F #. In generale, è una buona idea seguire le convenzioni di denominazione C# standard quando si dichiarano le classi. Quando si dichiara un modulo F #, è possibile utilizzare camelCase
(in particolare per i moduli destinati agli utenti F #) o PascalCase
se si desidera utilizzarli da C#.
Inoltre, è possibile utilizzare un trucco (utilizzato nella libreria di base F # per funzioni come List.map
effettivamente compilate come List.Map
). È possibile utilizzare l'attributo CompiledName
per specificare il nome nella versione compilata:
module Bar =
[<CompiledName("Foo")>]
let foo a = a + 1
Probabilmente è meglio usare una convenzione di denominazione unitaria, ma se si vuole mantenere un bel nome breve per F # utenti e standard di .NET nome per gli utenti C#, questa è un'opzione interessante.
fonte
2010-10-01 18:52:49
Grazie, per curiosità, sai anche come vengono mostrate le funzioni libere in F # in C#? Perché C# non può avere funzioni libere come F #. –
I moduli in F # appaiono come classi statiche in C#. Nota che il codice 'top-level' in F # è in un modulo; per esempio. il codice di primo livello in 'Program.fs' è compilato in un modulo chiamato' Program' e quindi C# vedrebbe 'Program.blah'. Ma evita i moduli pubblici di F # se vuoi interoparti con C# (come da raccomandazioni nel doc). In altre parole, leggi il documento; abbiamo passato molto tempo a mettere insieme tutte queste informazioni per rispondere a questo tipo di domande. – Brian
Grazie Brian, non sapevo che fossi uno degli sviluppatori di F #. Btw è anche accettabile usare l'attributo CompiledName come ha detto Tomas nella sua risposta? Sembra il meglio di entrambi i mondi. –