与C#(https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#identifiers)相比,F#允许标识符名称(http://fsharp.org/specs/language-spec/)中包含更广泛的字符集,包括'
,如果使用双反引号,则几乎允许任何内容:
用双反引号标记(
`` ``
)括起来的任何字符序列, 排除换行符,制表符和双反引号对 他们自己被视为一个标识符。注意,当一个标识符 用于类型名称,联合类型大小写,模块或 命名空间,即使在里面也不允许使用以下字符 双重反击标记:
.
,+
,$
,&
,[
,]
,/
,\\
,*
,\"
,`
但这会给语言之间的互操作带来问题 - 可能无法静态引用C#中F#代码中定义的某些实体,但只能使用反射动态访问它们。
是否有一组命名规则可以保证命名空间,类型等可以在任何CLI语言中引用?是否有限制.Net在这些名称的内部表示中允许的内容,或者是否允许通过语言解析器使用它的任意Unicode? p>