如何确保可以从任何.Net / CLI语言访问标识符?

时间:2018-03-28 18:40:52

标签: .net f#

与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?

0 个答案:

没有答案