【问题标题】:C# project folder namespace with '-' character带有“-”字符的 C# 项目文件夹命名空间
【发布时间】:2015-07-31 08:33:50
【问题描述】:

我意识到作为命名空间提供者的包含“-”字符的文件夹确实获得了与预期不同的命名空间。

例如我观察到嵌入式资源:

AssemblyName/lib/font/source-sans-pro/source-sans-pro.css

最后会有以下命名空间:

AssemblyName.lib.font.source_sans_pro.source-sans-pro.css

所以对于文件夹,而不是文件(为什么?),命名空间会发生变化,使得“-”被替换为“_”下划线字符。

很遗憾,我找不到任何描述这种行为的官方参考资料。任何人都可以提供一些关于这种行为的参考吗?为什么文件夹命名空间会改变?为什么不是文件的命名空间?

【问题讨论】:

    标签: c# namespaces


    【解决方案1】:

    标识符中不允许使用连字符,命名空间是标识符。原因很简单,如果你想一想 - x-y 是二进制 - 运算符,操作数为 xy。试图使其成为一个有效的标识符将是非常糟糕的。

    允许的标识符的完整描述在 C# 5 规范的第 2.4.2 节中。当然,与 C# 规范相比,您的嵌入式资源最终与 CLI 规范的相关性更高,但它具有类似的规则 - 定义(在 ECMA-335 中)以遵循 Annex 7 of Technical Report 15 of the Unicode 3.0 Standard 的规则。

    【讨论】:

    • 可能值得注意的是资源和命名空间如何协同工作,因为他的部分问题也是为什么更改仅适用于文件夹(命名空间)而不适用于保留连字符的文件名。
    • @LasseV.Karlsen:老实说,我在这方面并不是很权威——我只是在猜测。随意编辑一些东西:)
    • 我也不是,这就是我不写答案的原因:)
    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多