代码之家  ›  专栏  ›  技术社区  ›  quamrana Ryuzaki L

在C语言中嵌套别名#

  •  9
  • quamrana Ryuzaki L  · 技术社区  · 16 年前

    我看到了很多关于这个问题的答案 typedef C#中的问题,我使用过,所以我有:

    using Foo = System.Collections.Generic.Queue<Bar>;
    

    这很有效。我可以更改定义(特别是更改栏=>使用Foo的一切都会发生变化。伟大的

    现在我想让它起作用:

    using Foo = System.Collections.Generic.Queue<Bar>;
    using FooMap = System.Collections.Generic.Dictionary<char, Foo>;
    

    Foo

    有没有办法将现有别名用作另一个别名的一部分?

    1 回复  |  直到 16 年前
        1
  •  16
  •   Community Mohan Dere    6 年前

    根据标准,答案似乎是否定的 Section 16.3.1

    (一)发生的顺序 使用别名编写的指令具有 名称空间引用的名称空间或类型名称 使用alias指令不受影响 通过在 单元或命名空间主体。

    2其他 Word的命名空间或类型名称 如果立即包含 编译单元或命名空间主体已被删除 禁止使用指令。

    编辑:

    4th Edition 更详细,但仍然禁止在其他文件中使用别名进行引用。它还包含一个例子,使这一点明确。

    根据您对范围和打字强度的需求,您可能可以通过以下方式摆脱:

    class Foo : System.Collections.Generic.Queue<Bar>
    {
    }
    
        2
  •  0
  •   Tobias Knauss    6 年前

    根据 https://stackoverflow.com/a/35921944/2505186 这在放置
    using Foo = System.Collections.Generic.Queue<Bar>;

    using FooMap = System.Collections.Generic.Dictionary<char, Foo>;
    在不同的名称空间中,在您的情况下可能是

    ----- cs-file -----
    using System; (and others if needed)
    
    using Foo = System.Collections.Generic.Queue<Bar>;
    namespace my_software
    {
      using FooMap = System.Collections.Generic.Dictionary<char, Foo>;
    
      your usual code
    }
    ----- file end -----