gpt4 book ai didi

c# - 在 C# 中嵌套别名

转载 作者:可可西里 更新时间:2023-11-01 09:03:36 26 4
gpt4 key购买 nike

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

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

这很好用。我可以更改定义(尤其是更改 Bar => Zoo 等)并且使用 Foo 的所有内容都会更改。太好了。

现在我想让它工作:

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

但 C# 似乎不喜欢第二行中的 Foo,即使我已经在第一行中定义了它。

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

编辑:我正在使用 VS2008

最佳答案

根据标准,答案似乎是否定的。来自 Section 16.3.1 ,第 6 段:

1 The order in whichusing-alias-directives are written hasno significance, and resolution of thenamespace-or-type-name referenced by ausing-alias-directive is not affectedby the using-alias-directive itself orby other using-directives in theimmediately containing compilationunit or namespace body.

2 In otherwords, the namespace-or-type-name of ausing-alias-directive is resolved asif the immediately containingcompilation unit or namespace body hadno using-directives.

编辑:

我刚刚注意到上面链接的版本有点过时了。 4th Edition中相应段落的文字更详细,但仍然禁止在其他人中使用别名进行引用。它还包含一个明确说明这一点的示例。

根据您对范围界定和键入强度的需求,您可能能够摆脱类似的情况:

class Foo : System.Collections.Generic.Queue<Bar>
{
}

关于c# - 在 C# 中嵌套别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2362906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com